是否可以使用PHP CLI来生成* .sh文件并在PHP脚本中访问导出的Env变量?

Gar*_*hby 5 php exec environment-variables

我通常在这样的Linux上的bash终端中获取* .sh文件

. ./myscript.sh
Run Code Online (Sandbox Code Playgroud)

在运行命令行PHP脚本之前,我可以使用PHP的$ _SERVER super global访问导出的环境变量。

是否可以从PHP脚本本身中获取sh文件,然后访问其导出的变量?

我尝试了各种尝试都没有成功。我试过了

system('. ./myscript.sh')
system('sh ./myscript.sh')

exec('. ./myscript.sh')
exec('sh ./myscript.sh')

shell_exec('. ./myscript.sh')
shell_exec('sh ./myscript.sh')
Run Code Online (Sandbox Code Playgroud)

使用这些,导出的变量不会出现在$ _SERVER中。

有任何想法吗?

Ale*_*sky 4

您的变量不可用,因为它们所在的 shell 已退出。您需要从同一个 shell 中执行 PHP 才能获取其变量。

设置变量后编辑 myscript.sh 以启动 PHP 脚本:

export VAR1=1
export VAR2=2
php -f /path/to/script.php
Run Code Online (Sandbox Code Playgroud)

或者编写另一个包装器脚本来获取您的文件,然后从同一 shell 启动 PHP:

. ./myscript.sh
php -f /path/to/script.php
Run Code Online (Sandbox Code Playgroud)

编辑:或者像这样运行你的脚本:

. ./myscript.sh && php -f /path/to/script.php
Run Code Online (Sandbox Code Playgroud)