PHP exec&的问题shell_exec - Shell脚本执行

时间:2017-05-21 20:02:01

标签: php linux bash shell nginx

我无法运行我需要用来启动和停止使用脚本在本地计算机上运行的网络摄像头服务的php脚本。我在日志中找不到任何内容来说明为什么脚本没有'工作。

我承认有关PHP的严重障碍,特别是服务器端脚本。

环境是Debian Jesse运行Nginx并安装了所有必需的SSH和PHP模块

我已将www-data添加到sudoers文件中:

    www-data ALL=(ALL) NOPASSWD: /var/www/html/start_webcam.sh

在以下位置为www-data启用$ PATH环境:

    /etc/php5/fpm/pool.d/www.conf

shell脚本位于... / html目录中,从终端运行,没有任何问题。

这是php和shell脚本的代码:

start_webcam.php:

    <?php
    echo exec('sudo bash /var/www/html/aspirebox/start_webcam.sh 2>&1, $output');
    print_r($output);
    ?>

$ output和print_r的东西在那里,因为这是我根据我在这里发现的帖子尝试的最后一件事。

start_webcam.sh

    #!/bin/bash
    service motion start

提前感谢任何有线索的人。经过2天的摔跤,我相信我没有。

2 个答案:

答案 0 :(得分:0)

根据Passing Variables to shell_exec()?,你应该改变你的代码:

<?php
$output = exec('/var/www/html/aspirebox/start_webcam.sh 2>&1 ');
print_r($output);
?>

让你的bash脚本全部执行(不需要sudo bash):

chmod a+x /var/www/html/aspirebox/start_webcam.sh

答案 1 :(得分:0)

非常感谢 - 这很有用。

我通过直接获取shell脚本运行目录的路径,以及运行“service”的正确路径。

现在我只想弄清楚为什么我会“无法启动动作。服务:拒绝访问”

我已经给了www-data权限来运行脚本而没有密码在sudoers上,必须继续挖掘。

再次感谢!