繁体   English   中英

无法从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-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM