通过php和bash执行服务命令

时间:2018-03-04 13:44:41

标签: php bash apache service centos

我想从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)

2 个答案:

答案 0 :(得分:0)

/ etc / sudoers中的

:www-data ALL = NOPASSWD:/var/www/html/script.sh

尝试:

exec ("/var/www/html/script.sh" .$field1 . $field2 . $field3, $output );

http://php.net/manual/en/function.exec.php

答案 1 :(得分:0)

要求在sudoers文件中设置tty,避免命令由apache执行。