在rasp

时间:2017-09-09 21:51:58

标签: php bash apache shell raspbian

我有一个脚本调用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?

你有什么想法吗?

提前致谢,

维克多

1 个答案:

答案 0 :(得分:0)

首先关闭:

  • 如果您没有非常的充分理由,请不要使用sudo。
  • sh不一定会调用bash
  • sudo需要密码,但您没有提供任何错误。

我建议您尝试使用exec代替shell_exec(两者之间存在差异):

<?php
    exec('/var/www/html/webcam.sh', $output, $exitCode);

    echo 'Exit code: '.$exitCode.' <hr />';
    echo implode('<br />', $output);

您的问题的另一个来源可能是权限相关:

网络服务器通常以不同的用户身份运行。

确保网络服务器实际上可以写入输出目录。