4

解决了

在写一个新问题之前,我在网上搜索了一个解决方案。我有一个带有 apache2、php5.4、ssl 的树莓派。我想从 php 执行一个 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 
4

2 回答 2

4

您的问题是:通过控制台启动 php 脚本时,您正在使用当前用户的权限启动 php。当一个进程通过在浏览器中打开来执行时,它将拥有您的 web-server-process 用户的权限。

无论如何,您的组权限必须为 7。将 python 脚本权限更改为777(read-write-execute for everyone) 或将其更改为770并确保您的 web-servers 用户在设置为该文件的组内。

于 2013-09-09T00:10:08.420 回答
-2

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

于 2020-08-08T18:51:54.987 回答