【问题标题】:Messing with environment variables for one command弄乱一个命令的环境变量
【发布时间】:2015-08-18 15:31:27
【问题描述】:

我目前正计划使用 Symfony 的 ProcessBuilder,它允许设置一些环境变量,这些变量将传递给 proc_open 调用。

我需要某个命令来更改TMPDIR,并在之后恢复它,所以我想知道修改后的环境(以及$TMPDIR env 变量的修改值)何时会在打电话,还是我需要自己恢复?如果需要特定命令(在我的例子中是 ghostscript),这个值是否会被改变?

谢谢

【问题讨论】:

  • 假设您使用putenv更改环境变量,请求完成后将恢复为标准设置。您可以结合使用 getenv 来复制旧值,并使用 putenv 在请求期间自行重置它,以防脚本中的其他内容尝试使用它。
  • 我指的是 proc_open 函数的 $env 参数,但我猜 putenv 也可以做到这一点......
  • 对不起。我没有阅读整个问题。 proc_open 中的 env 不是 PHP 的环境。只要您保持 I/O 指针打开,它就会持续,但仅限用于打开指针的命令。
  • 经过一些测试,就是这样,所以它基本上做了我需要它做的事情。问题已解决,谢谢!

标签: php symfony proc-open


【解决方案1】:

经过一些测试,似乎proc_open函数中的$env参数真的是只在运行过程中修改环境。所以它基本上涵盖了我的问题。 :}

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2013-09-25
    • 1970-01-01
    相关资源
    最近更新 更多