通过php和bash执行服务命令

问题描述 投票:0回答:2

我想从一个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 apache service centos
2个回答
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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.