我有一个Octave文件 sr.m
sqrt(3^2 + 4^2)
我必须使用 PHP 执行此文件并在浏览器中显示输出。 sr.m 文件位于octavepgm
的{{1}}文件夹中。
我的 php 代码是
Desktop
这给出了int 1作为输出。
我怎样才能使这个工作..请帮助我..
预期产量为5.
答案 0 :(得分:0)
有几个问题我会进一步解释,但这里是你如何做到的:
$ 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的--eval
选项。