0

我有一个 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 脚本?

4

1 回答 1

1

这很可能是权限问题。

尝试

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 文件,并将标准错误输出到标准输出。

于 2013-07-15T18:26:20.923 回答