繁体   English   中英

为什么putenv()有效但导出无效?

[英]Why does putenv() work but export doesn't?

在php中,运行:

echo shell_exec("export http_proxy=http://myproxy.com:8080 2>&1");
echo shell_exec("env | grep proxy");

结果为空白输出。 似乎未设置环境变量,但是export命令也没有给出任何错误。 但是,这可行:

putenv("http_proxy=http://myproxy.com:8080");
echo shell_exec("env | grep proxy");

结果:

http_proxy=http://myproxy.com:8080

为什么出口不起作用? 导出完成后,环境变量是否未设置? 还是这是某种安全设置? 操作系统是CentOS 7。

每个shell_exec调用都在其自己的shell子进程中运行。 一个调用中对环境的更改不会持久到另一个调用中。 (一个进程不能修改其父级或同级的环境)。

putenv而另一方面,修改当前(PHP)进程的环境,然后由所有继承shell_exec子进程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM