无法从 php 执行 python 脚本


Can't execute python script from php

已解决

在写一个新问题之前,我会在网上搜索解决方案。我有一个带有apache2的树莓派,php5.4,ssl。我想从 php one 执行一个 python 脚本。php 脚本在/var/www 中,它有 777 权限。php 文件:

shell_exec('python /home/pi/Desktop/Python/prova.py');

Prova.py 有750个权限,但他的组所有者是www-data,这是由shell_exec('whoami')打印的用户;它有效。Prova.py:

print "Hello World"

该脚本直接从命令行工作:

php filename.php

它不能从浏览器工作!

最后,我成功地从浏览器执行了脚本。我必须将 www-data 用户添加到具有相关权限的 sudoers 文件中:

www-data ALL=(ALL) NOPASSWD: /etc/bin/python 

你的问题是这样的:通过控制台启动 php 脚本时,您将使用当前用户的权限启动 php。当一个进程通过在浏览器中打开它来执行时,它将具有您的 Web 服务器进程用户的权限。

无论如何,您的组权限都必须为 7。将 python 脚本权限更改为 777(每个人的读写执行)或将其更改为770并确保您的 Web 服务器用户位于该文件的组中。

我在

尝试构建一个 Web 界面来更改墨色 pHAT 上的图像时遇到了类似的问题。事实证明,www-data无法访问GPIO。外。通过运行"sudo -u www-data php index.php"进行测试,它返回了我正在寻找的错误。所以我给www-data GPIO权限"usermod -a -G gpio www-data",而不是添加到suddoers。