[英]Issues With PHP exec & shell_exec - Shell Script Execution
我一直无法运行用于启动和停止使用脚本在本地计算机上运行的网络摄像头服务所需的php脚本。 我在日志中找不到任何内容来指示为什么脚本不起作用。
我承认在PHP方面尤其是服务器端脚本编写方面存在严重的障碍。
环境是运行Nginx且安装了所有必需的SSH和PHP模块的Debian Jesse
我已经将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天的搏斗,我确定自己不会。
根据将变量传递给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
非常感谢您-确实有效。
我通过获取运行Shell脚本的目录的正确路径以及运行“ service”的正确路径来进行工作。
现在,我只想弄清楚为什么我会收到“无法启动motion.service:访问被拒绝”的信息
我已获得www-data许可,可以在sudoers上运行无密码的脚本,必须不断进行挖掘。
再次感谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.