【发布时间】:2018-08-12 06:13:31
【问题描述】:
我想从一个 html 页面启动一个 bash 脚本。 该脚本应该修改文件并重新加载星号服务。 我正在使用 PHP 来执行此操作。
我的 php 脚本:
<?php
$field1 = $_GET["P1"];
$field2 = $_GET["P2"];
$field3 = $_GET["P3"];
echo "$field1 $field2 $field3 ";
$output = shell_exec("/var/www/html/script.sh $field1 $field2 $field3");
echo "<pre>$output</pre>";
?>
还有我的 bash 脚本:
#!/bin/bash
num1=$1
num2=$2
num3=$3
for i in 1 2 3
do
temp="num$i"
if [ -z ${!temp} ]
then
:
else
echo "${!temp}" >> /etc/asterisk/file.conf
fi
done
sudo service asterisk reload
我尝试将 apache 添加到 /etc/sudoers,但它不起作用,即使使用 ALL ALL=NOPASSWD: ALL 规则也是如此。
我遇到了这个问题,无法让它正常工作。 脚本本身运行正常,只有重新加载部分不起作用。
谁能告诉我该怎么做? (我使用 httpd 运行 CentOS 6.6)
【问题讨论】:
-
错误信息到底是什么?如果你自己运行这个脚本会发生什么?
-
我在任何日志文件中都没有任何与此相关的错误消息,这就是问题所在
-
如果直接运行脚本服务重启正常吗?
-
使用无特殊权限的新账号,直接运行脚本时服务正常重启
-
这可以与任何安全配置文件相关吗?我遇到了阻止从 php 执行 bash 的 SELinux 问题。也许这样的事情可能会阻塞?
标签: php bash apache service centos