У меня есть файл 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 =
part. Кроме того, с помощью printf()
вы можете лучше управлять форматом вывода.
Проблема № 3:
Для таких простых случаев используйте опцию Octave --eval
.