我有一个脚本调用fswebcam用我的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 error log
所以我尝试用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 log error
我已尝试过这个帖子的所有内容:How to run .sh script with php?
你有什么想法吗?
提前致谢,
维克多
答案 0 :(得分:0)
首先关闭:
sh
不一定会调用bash
。sudo
需要密码,但您没有提供任何错误。我建议您尝试使用exec
代替shell_exec
(两者之间存在差异):
<?php
exec('/var/www/html/webcam.sh', $output, $exitCode);
echo 'Exit code: '.$exitCode.' <hr />';
echo implode('<br />', $output);
您的问题的另一个来源可能是权限相关:
网络服务器通常以不同的用户身份运行。
确保网络服务器实际上可以写入输出目录。