从php脚本执行python命令

时间:2014-04-21 11:34:07

标签: php python

我在服务器中安装了 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;

3 个答案:

答案 0 :(得分:0)

每次运行shell_exec时,它都会打开一个全新的shell实例。

编辑:

你可以传递一个python命令来执行:

$expression = '1 + 2';
$cmd = 'python -c \'print "%f" % (' . $expression . ')\'';
$output = shell_exec($cmd);

诚然,这不是使用同情,但对于简单的数学表达式,您可能不需要。如果这样做,您只需要在同一个命令中导入库,如下所示:python -c 'import sympy; print "%f" % sympy.sqrt(3)'

答案 1 :(得分:0)

我的猜测是shell_exec的工作目录(cwd)与您手动执行时的工作目录(cwd)不同。

您的工作示例指定了可在任何地方使用的硬路径。而您的不工作示例指定了相对路径(./是cwd)。

将您的呼叫转换为isympy以在磁盘上提供其完整路径。或者弄清楚如何设置shell_exec的密码。

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

答案 2 :(得分:0)

我可以用不同的方式管理所需的结果。

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

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

相关问题