[英]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-server-process 用户的权限。
无论如何,您的组权限必须为 7。 将 python 脚本权限更改为777
(所有人的读写执行)或将其更改为770
并确保您的 web-servers 用户在设置为该文件的组内。
我在尝试构建 Web 界面以更改漆黑 pHAT 上的图像时遇到了类似的问题。 原来 www-data 无法访问 GPIO.OUT。 通过运行“sudo -u www-data php index.php”进行测试,它返回了我正在寻找的错误。 所以我给 www-data GPIO 权限“usermod -a -G gpio www-data”而不是添加到 suddoers。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.