Сначала я приведу некоторые сведения. У меня есть три файла: test.php, test.txt, myJar.jar. Вот код внутри каждого из них
test.php:
<?php
exec("java -cp myJar.jar Hello test.txt", $o);
print_r($o);
?>
фактический код, который использовался для создания файла myJar.jar:
import java.io.*;
public class Hello
{
public static void main(String[] args) throws Exception
{
FileReader file = new FileReader(args[0]);
BufferedReader reader = new BufferedReader(file);
String line = reader.readLine();
while (line != null)
{
System.out.println(line);
line = reader.readLine();
}
}
}
test.txt:
hello hello dinosir
this is a test
testing to the extreme
adding more crap here
and here
Теперь я помещаю эти файлы в htdocs и запускаю localhost / test.php, используя Chrome:
Совершенно точно, что я хотел. Проблема в том, что когда я загружаю эти файлы в github и связываю их с веб-сайтом на Azure, я захожу на веб-сайт, но вижу только Array (). Я полагаю, это потому, что в Azure нет jre для запуска команды «java -cp myJar.jar Hello test.txt». Любая идея о том, как я могу установить / включить JRE на Azure, чтобы сделать test.php так же, как на моем локальном хосте
Вы проверили настройки вашего сайта? Убедитесь, что Java не выключен (по умолчанию)
Единственный способ заставить это работать в приложении Azure как PHP — это создать .bat
файл. Именно так:
example.bat
должен содержать следующие строки:
set PATH=%PATH%;%JAVA_HOME%/bin
java -jar %~dp0java-file.jar %*
Важно понимать, что единственное, что вы должны изменить, это java-file.jar
и это должно быть обернуто %~dp0
а также %*
,
Затем выполните .bat
файл с php
:
exec("example.bat", $output);
Это оно. Работает для меня.