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



我一直无法运行 php 脚本,我需要使用这些脚本来启动和停止在本地计算机上运行的网络摄像头服务。 我在日志中找不到任何指示脚本不起作用的原因。

我承认在PHP方面受到严重阻碍,尤其是服务器端脚本。

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

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

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

在以下位置为 www 数据启用了$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

提前感谢这里有线索的人。经过两天的挣扎,我确信我没有。

根据 将变量传递给shell_exec()? 你应该像这样更改你的代码:

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

并让你的 bash 脚本作为 all 执行(不需要 sudo bash):

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

非常感谢 - 这奏效了。

我努力获取 shell 脚本运行的目录的路径,以及运行"服务"的正确路径。

我现在要做的就是弄清楚为什么我得到"无法启动 motion.service:访问被拒绝">

我已经授予 www-data 权限,可以在没有密码的情况下运行脚本,必须继续挖掘。

再次感谢!

最新更新