exec()函数在cron中工作但不是手动

exec() function working in cron but not manually

我正在使用 Raspberry Pi 和网络服务器控制我的家庭自动化。我用这条线开灯(向无线电源插座发送 RC 信号)。

exec("sudo ./../../../home/pi/wiringPi/examples/lights/action 63 A on");

当脚本由 cron 作业 运行 时,这是有效的,但是当我手动想要执行此命令时(使用 php 表单和按钮),它不起作用。我尝试添加 $output, $return); 并检查 $return,确认 exec() 函数未执行。但是,当我使用 exec("whoami"); 之类的东西时,脚本会被执行。

为什么我的命令只能在 cron 作业中运行?我曾经有过这个工作,不知道发生了什么。在终端通过ssh手动发送命令正常。

修复此命令的权限并 运行 它没有 sudo(对于 ubuntu 默认 php 用户是 www-data,对于 suse www运行,... ). 还要检查路径。我推荐绝对路径。