我正在尝试在一个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
有什么想法吗?