2015-08-18 33 views
0

我目前正在计划使用Symfony的ProcessBuilder,它允许设置一些环境变量,它将传递到proc_open调用。与一个命令的环境变量混淆

我需要某个命令来更改TMPDIR并在之后恢复它,所以我想知道在调用之后修改后的env(并因此修改了env变量的值)是否会被恢复,或者我需要自己恢复吗?如果需要某个特定的命令(我的情况是ghostscript),这个值是否会发生变化?

感谢

+1

假设您正在使用'putenv'来更改环境变量,那么当请求完成时它将恢复为标准设置。您可以使用'getenv'复制旧值和'putenv'以在请求期间自行重置,以防脚本中的其他内容尝试使用它。 – kainaw

+0

我指的是'proc_open'函数的'$ env'参数,但是我猜'putenv'也可以这样做,然后... – Talus

+1

对不起。我没有看完整个问题。 'proc_open'中的env不是PHP的环境。只要保持I/O指针处于打开状态,它将持续运行,但仅限用于打开指针的命令。 – kainaw

回答

0

一些测试后,它似乎在proc_open功能$env参数是真的修改环境只对运行过程的持续时间。所以它基本上涵盖了我的问题。 :}