繁体   English   中英

从 php 脚本执行 python 命令

[英]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。

(如果这不能解决问题,请多说“不起作用。”会发生什么?错误?错误的全文是什么?)

我可以用不同的方式管理想要的结果。

  1. 创建了一个接受表达式作为命令行参数的 python 脚本,执行并显示输出。

  2. 通过将表达式作为命令行参数传递,从 php 调用此脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM