从PHP-Linux执行一个python文件


Executing a python file from PHP - Linux

我有一个python文件,每当调用php页面时,我都想执行它。python文件与php文件位于同一文件夹中。执行时的python脚本编辑php文件访问的文本文件。

我有以下代码:

<?php 
exec("python somefile.py",$output);
$file = fopen("test.txt",'r');
....

出于某种原因,python脚本永远不会被执行。我当然知道这一点,因为我可以从文本文件中的更改中看到这一点。由于我不确定脚本是否可执行,所以我在命令中包含了"python"。我还参加了

chmod +x somefile.py

只是为了确保这不是原因。但这也于事无补。我应该更改什么以使php页面在调用python脚本时执行该脚本?

这很可能是权限问题。

尝试

echo exec("whoami");

这会让你知道php是以谁的身份运行的。然后你需要验证这个用户是否可以运行python脚本。如果该文件不是由运行python的同一守护进程创建的,那么您很可能会被拒绝权限。

更新

这会让你知道谁拥有你正在处理的所有文件。要写入的文件需要可由运行python的用户写入。如果您从ssh运行python,那么很可能与从exec运行python时的用户不同。

echo exec('whoami') . "<br>";
echo exec("ls -l test.txt") . "<br>";
echo exec("ls -l somefile.py") . "<br>";

更新2

因为我总是忘记这是存在的。

passthru('python somefile.py 1 2>&1');

这将执行您的python文件,并将stderr输出到stdout。