代码之家  ›  专栏  ›  技术社区  ›  Victor Meunier

在raspbian上从PHP执行bash脚本

  •  0
  • Victor Meunier  · 技术社区  · 7 年前

    我有一个脚本,调用fswebcam用我的USB摄像头捕捉jpg。我使用“chmod+x webcam.sh”使其可执行:

    文件:/var/www/html/webcam。上海

    #!/bin/bash
    DATE=$(date + "%Y-%m-%d_%H%M")
    fswebcam -r 640x480 /home/pi/webcam/$DATE.jpg
    

    文件:/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 回复  |  直到 7 年前
        1
  •  1
  •   Marco    7 年前

    首先:

    • 如果你没有 这是很好的理由。
    • sh bash .
    • sudo

    我建议试试 exec 而不是 shell_exec (两者之间存在差异):

    <?php
        exec('/var/www/html/webcam.sh', $output, $exitCode);
    
        echo 'Exit code: '.$exitCode.' <hr />';
        echo implode('<br />', $output);
    

    问题的另一个来源可能与权限有关:

    Web服务器通常作为不同的用户运行。

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