У меня есть файл Octave sr.m
sqrt(3^2 + 4^2)
Я должен выполнить этот файл, используя PHP и отображать вывод в браузере. sr.m файл находится в octavepgm
папка в Desktop
,
мой PHP код
$cmd = "octave3.6.4 -qf C:\\Users\\deepu_000\\Desktop\\octavepgm\\sr.m";
$ex = passthru($cmd, $output);
var_dump($output);
Это дает int 1 в качестве вывода.
Как я могу заставить это работать .. пожалуйста, помогите мне ..
Ожидаемый результат 5.
Есть несколько вопросов, которые я объясню ниже, но вот как вы это делаете:
$ php -a
Interactive mode enabled
php > $cmd = "octave -qf --eval 'printf (\"%f\", sqrt (3^2 + 4^2));'";
php > $output = exec ($cmd);
php > var_dump ($output);
string(8) "5.000000"
Выпуск № 1:
Ты используешь passthru()
но если вы хотите захватить выход октавы, вы должны использовать exec()
, Это объясняется в руководстве по PHP (выделение добавлено):
Функция passthru () похожа на функцию exec () в том, что она
выполняет команду. Эта функция должна использоваться вместо exec () или
system (), когда вывод команды Unix представляет собой двоичные данные, которые
необходимо передать прямо обратно в браузер.
Выпуск № 2:
Если вы хотите получить результат только от Octave, вы должны использовать printf()
в противном случае вы получите отображение переменной, включая ans =
часть. Кроме того, с printf()
Вы можете лучше контролировать формат вывода.
Выпуск № 3:
Для таких простых случаев используйте Octave’s --eval
вариант.
Других решений пока нет …