从PHP CLI脚本运行命令之前导出shell环境变量

Gre*_*g K 7 php environment-variables command-line-interface

我有一个使用passthru()来运行命令的脚本.我需要在运行此命令之前设置一些shell环境变量,否则将无法找到它的库.

我尝试过以下方法:

putenv("LD_LIBRARY_PATH=/path/to/lib");
passthru($cmd);
Run Code Online (Sandbox Code Playgroud)

使用putenv()似乎不会传播到我正在运行的命令.它无法说它找不到它的库.当我export LD_LIBRARY_PATH=/path/to/lib在bash中运行时,它运行正常.

我也试过以下(徒劳):

exec("export LD_LIBRARY_PATH=/path/to/lib");
passthru($cmd);
Run Code Online (Sandbox Code Playgroud)

如何从PHP设置一个shell变量,它传播到我的PHP脚本的子进程?

我是否仅限于检查当前环境中是否存在变量并要求用户手动设置它?

gym*_*all 5

我不是100%熟悉PHP的exec如何工作,但你尝试过: exec("LD_LIBRARY_PATH=/path/to/lib $cmd")

我知道这适用于大多数shell,但我不确定PHP是如何做事的.

编辑:假设这是有效的,处理多个变量只需用空格分隔:

exec("VAR1=val1 VAR2=val2 LD_LIBRARY_PATH=/path/to/lib $cmd")