当前位置 主页 > 服务器问题 > Linux/apache问题 >

    PHP调用Linux命令权限不足问题解决方法

    栏目:Linux/apache问题 时间:2018-11-17 14:12

    这篇文章主要介绍了PHP调用Linux命令权限不足问题解决方法,本文是解决项目问题总结而来,通过修改sudo配置文件解决无权限执行命令问题,需要的朋友可以参考下

    业务背景:  yourcmd为我的linux程序,它对权限要求非常严格,当用php去执行yourcmd程序

    系统:CentOS 6.3

    apache是php的执行用户

    用exec函数去执行linux系统上的程序/usr/local/yourcmd/sbin/yourcmd

    php代码如下:
    复制代码 代码如下:
    <?php
    $conf_file = "/var/www/html/webroot/test.tmp";
    $command = "sudo /usr/local/yourcmd/sbin/yourcmd -t -f {$conf_file}";
    exec($command,$out);
    print_r($out);

    测试结果为没有权限
    复制代码 代码如下:
    Array ( [0] => sudo: no tty present and no askpass program specified )

    解决步骤:
    复制代码 代码如下:
    $ visudo

    1)注释以下行
    复制代码 代码如下:
    #Defaults    requiretty

    2)在文件末尾加入以下
    复制代码 代码如下:
    apache ALL=(ALL) NOPASSWD: ALL
    Cmnd_Alias yourcmd = /usr/local/yourcmd/sbin/yourcmd

    最后测试结果
    复制代码 代码如下:
    Array ( [0] => Warning: memory is too small: 1044725760 [1] => test configure is ok )