php - 从 PHP - Linux 执行 python 文件

标签 php python 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。

关于php - 从 PHP - Linux 执行 python 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17660459/

相关文章:

Php(eval vs call_user_func vs 变量函数...)

php - Doctrine 没有加载类 MappingException

linux - 如何从 Linux 内核模块确定网络设备速度

linux - Grep 文件中的多个模式并为每个模式输出前 5 个匹配项

php - 如何将 CMS 集成到现有网站中

php - 拉拉维尔 : Multiple type users

python - ROS 从 python 节点发布数组

python - 如何在 QWidget 中跟踪 matplot Canvas 上的鼠标?

python - 为什么添加 : to any out of range index on a list slice not return out of range?

c++ - Eclipse C++ 控制台打印命令 linux