已解决
在写一个新问题之前,我会在网上搜索解决方案。我有一个带有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。