【问题标题】:How to set command line environment variable in PHP shell_exec如何在 PHP shell_exec 中设置命令行环境变量
【发布时间】:2011-04-04 01:11:16
【问题描述】:

我试图在 PHP 中通过 shell_exec 运行的脚本需要设置一个环境变量,afaik 是通过以下方式完成的:

export VARIABLE=value

但是,要运行脚本,我不得不这样做:

<?PHP
$sOutput = shell_exec("export VARIABLE=value && my_command_goeth_hereth");

每次运行任何命令时都必须导出变量似乎毫无意义。

这是唯一的方法吗,还是我错过了更简单的方法?

【问题讨论】:

    标签: php command-line


    【解决方案1】:

    由于环境变量是继承的,在脚本中设置它们也会为它启动的命令设置它们。你只需要使用putenv

    putenv("VARIABLE=value");
    

    【讨论】:

      【解决方案2】:

      不只是:

      <?PHP
      shell_exec('SOMEVAR=SOMEVAL /some/program');
      

      做这个伎俩?

      如果您正在运行多个 shell 脚本,那么 putenv 是您的朋友,正如 zneak 指出的那样。

      编辑用一个例子:

      env.php:

      <?PHP
      echo $_ENV['FOO'];
      echo "\n";
      

      runenv.php:

      <?PHP
      echo shell_exec('FOO=bar php env.php');
      

      然后试试 $ php runenv.php

      【讨论】:

      • 为什么这和我上面做的有什么不同?即export VARIABLE=value &amp;&amp; command
      • 几乎是一回事。但是,如果您只想将环境应用于单个脚本/程序,则不需要导出。不止一个,使用 putenv() 可能会更好
      猜你喜欢
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 2013-07-17
      • 2018-06-18
      • 2019-06-24
      • 2018-07-22
      • 2021-12-25
      • 2014-09-02
      相关资源
      最近更新 更多