无法从php执行python脚本

时间:2013-09-08 23:29:05

标签: php python

解决

在撰写新问题之前,我会在整个网络上搜索解决方案。 我有一个覆盆子pi与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

它不适用于broswer!

最后我成功地从浏览器执行脚本。 我不得不将www-data用户添加到sudoers文件及其相关权限:

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:-2)

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