【发布时间】:2016-04-14 21:59:39
【问题描述】:
我正在尝试执行一个 php 脚本,但我遇到了这种错误:
Warning: file_put_contents(/sys/class/gpio/export): failed to open stream: Permission denied in /home/pi/php-gpio/src/PhpGpio/Gpio.php on line 99
Warning: file_put_contents(/sys/class/gpio/gpio17/direction): failed to open stream: Permission denied in /home/pi/php-gpio/src/PhpGpio/Gpio.php on line 103
我尝试在 $ sudo visudo 中设置权限,如下所示:
www-data ALL=NOPASSWD: path/to/my/script
或
www-data ALL=NOPASSWD: ALL
但不工作,我只能在命令行中使用 sudo 来执行此脚本!
提前致谢!
【问题讨论】:
-
对此的快速解决方法是:
sudo chmod 777 /home/pi/php-gpio/src -R但它本质上是一个安全漏洞。 -
@dvdciri 谁是您尝试运行的文件的所有者(ls -l /path/to/file)以及文件权限是什么?
-
哎呀,参数实际上应该是
sudo chmod 777 /sys/class/gpio/ -R,但您仍然应该找到一种方法将数据作为 www-data 写入特定文件夹中。将该目录的所有者更改为带有sudo chown www-data /path/to/folder的www-data 并授予所有者写入权限。 -
好的,首先感谢您的帮助。其次,这是一个 api,应该从客户端运行。我将为这些 API 设置身份验证,所以我不关心安全性.. @AdelBachene 所有者是用户“pi”
-
@dvdciri 我猜你的 php 是以 root 用户身份运行的,所以你只需要将文件权限更改为 777 并注意安全^^
标签: php linux permissions sudo raspbian