我有一个脚本,它调用fsweb摄像头来用我的USB摄像头捕捉一个jpg。我用"chmod +x webcam.sh“使其可执行:
文件: /var/www/html/webcam.sh
#!/bin/bash
DATE=$(date + "%Y-%m-%d_%H%M")
fswebcam -r 640x480 /home/pi/webcam/$DATE.jpg这在没有sudo的命令行中运行得很好,所以我制作了一个小PHP页面:
文件: /var/www/html/index.php
<?php
$output = shell_exec('sh /var/www/html/webcam.sh');
echo "<pre>$output</pre>";
?>当我转到网页时,我只会得到一个空白页面,在我的摄像头文件夹中没有创建jpg。
我得到了以下错误:Apache2错误日志
因此,我尝试修改PHP中的调用,以便:
<?php
$output = shell_exec('/usr/bin/sudo /bin/bash /var/www/html/webcam.sh');
echo "<pre>$output</pre>";
?>我还将以下内容添加到sudoers文件中
www-data ALL=NOPASSWD: /path/to/script但我还是会发现错误:apache2日志错误
我已经尝试过这个线程中的所有东西:如何使用php运行.sh脚本?
你知不知道?
提前谢谢你,
维克多
发布于 2017-09-09 22:54:13
首先:
sh不一定调用bash。sudo需要一个密码,但是您没有提供任何因此而产生的错误。我建议尝试使用exec而不是shell_exec (两者之间有区别):
<?php
exec('/var/www/html/webcam.sh', $output, $exitCode);
echo 'Exit code: '.$exitCode.' <hr />';
echo implode('<br />', $output);造成问题的另一个原因可能是权限相关:
user服务器通常以不同的用户运行。
确保webserver实际上可以写入输出目录。
https://stackoverflow.com/questions/46135434
复制相似问题