代码之家  ›  专栏  ›  技术社区  ›  Nael

通过php和bash执行service命令

  •  0
  • Nael  · 技术社区  · 8 年前

    我想从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 回复  |  直到 8 年前
        1
  •  0
  •   Lorenzo    8 年前

    在/etc/sudoers:www-data-ALL=NOPASSWD:/var/www/html/script中。上海

    尝试:

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

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

        2
  •  0
  •   Nael    8 年前

    require tty是在sudoers文件中设置的,避免了apache执行的命令。

    推荐文章