【发布时间】:2019-10-10 09:10:09
【问题描述】:
我在 /home/pi/Test.py 的树莓上有一个 python 脚本,可以从 laravel php 控制器调用。
在 Raspberry 上安装了 Raspian、Apache、PHP 7.3、Python
我通过 cmdline 试过了
python Test.py 4444 > 工作
通过本地php服务器
php artisan serve
/localhost:8000/setValue/666 > 有效,返回值为0
然后我将应用程序部署到 Apache2 目录
/var/www/html/Project
我再次调用了服务
localhost:80/Project/setValues/666 > nothing, returnvalue 1
这是我的代码
chdir('/home/pi');
$cmd('python Test.py ' . $param);
exec($cmd,$out,$status);
return $status
从 php 调试服务器执行这个返回“0”,从 apache“1”
我试过了
exec ()
shell_exec()
passthrough()
一切都一样——在本地服务器上工作,而不是在 apache 上。
我在 python 脚本和 laravel 项目中将所有者更改为 www-data 并将权限更改为 775,我还将 www-data 添加为 sudoer 但没有任何效果。
我认为必须对可执行权限做一些事情,但还能做什么?
编辑: 我在 Apache error.log 中发现了一条注释
GPIO.setup(数据,GPIO.OUT) RuntimeError: 不在 RPi 上运行!
似乎 www-data 无法访问 GPIO 设置,用户“pi”虽然可以,这意味着 - 我如何使 www-data 拥有与用户“pi”相同的权限?
【问题讨论】:
标签: php python linux laravel raspberry-pi