[英]Executing python commands from php script
我已经在服务器中安装了SymPi ,并且可以从命令行执行以下操作。
python ./sympy-0.7.5/bin/isympy
(这将打开一个控制台,我可以在其中输入数学表达式。然后是以下表达式)
1 + 2
(将给出 3 作为输出)
我的目标是使用shell_exec
从 php 做同样的事情。 我已经编写了一个如下所示的 php 文件,但它不起作用。
$command = escapeshellcmd('python ./sympy-0.7.5/bin/isympy');
shell_exec($command);
$output = shell_exec('1 + 2');
谁能帮我弄清楚为什么这不起作用?
请注意,以下脚本工作正常,它只执行一个 python 脚本并检索输出。
$command = escapeshellcmd('python C:\PythonPrograms\test3.py');
$output = shell_exec($command);
echo $output;
每次运行 shell_exec 时,它都会打开一个全新的 shell 实例。
编辑:
你可以传递一个命令让 python 像这样执行:
$expression = '1 + 2';
$cmd = 'python -c \'print "%f" % (' . $expression . ')\'';
$output = shell_exec($cmd);
诚然,这不是使用 sympy,但对于简单的数学表达式,您可能不需要。 如果你这样做,你只需要在同一个命令中导入库,就像这样: python -c 'import sympy; print "%f" % sympy.sqrt(3)'
python -c 'import sympy; print "%f" % sympy.sqrt(3)'
我的猜测是shell_exec
的工作目录 (cwd) 与您手动执行时所在的目录不同。
您的工作示例指定了一个可以在任何地方工作的硬路径。 而您不工作的示例指定了一个相对路径( ./
是 cwd )。
将您的调用转换为isympy
以在磁盘上提供其完整路径。 或者弄清楚如何设置shell_exec
的 cwd。
(如果这不能解决问题,请多说“不起作用。”会发生什么?错误?错误的全文是什么?)
我可以用不同的方式管理想要的结果。
创建了一个接受表达式作为命令行参数的 python 脚本,执行并显示输出。
通过将表达式作为命令行参数传递,从 php 调用此脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.