在PHP

时间:2015-10-29 03:13:25

标签: php linux bash sudo

我正在尝试在一个bash脚本中返回一个全局环境变量的值,该脚本是从PHP内部执行的(以sudo身份运行)。

从bash脚本运行命令printenv会显示未设置全局变量。我知道sudo会重置环境。

请考虑以下设置;

定义全局环境变量

root@test:/# export HEY=hello

测试var的存在

root@test:/# printenv | grep HEY
HEY=hello

请考虑这个PHP函数

PHP功能

function testAction() {

    define('TEST_CMD', '/usr/bin/sudo /usr/local/test/bin/');
    $command = 'bash_script';
    $query = TEST_CMD.$command;

    exec ($query, $output, $return_var);

    var_dump( $output );
    var_dump( $return_var );
    echo exec('whoami');

}

/etc/sudoers.d/admin

的内容
admin   ALL=(ALL)       ALL
admin   ALL=NOPASSWD:/usr/local/test/bin/*

/usr/local/test/bin/bash_script

的内容
#!/bin/bash
printenv
echo $HEY
exit

我已尝试将Defaults env_keep +="HEY"置于/etc/sudoers.d/admin内,但这似乎也不起作用。

操作系统是ubuntu 14.04

有什么想法吗?

0 个答案:

没有答案