php - 是否可以使用 PHP CLI 获取 *.sh 文件并在 PHP 脚本中访问导出的环境变量?

标签 php exec environment-variables

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

. ./myscript.sh

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

是否可以从 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')

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

有什么想法吗?

最佳答案

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

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

export VAR1=1
export VAR2=2
php -f /path/to/script.php

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

. ./myscript.sh
php -f /path/to/script.php

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

. ./myscript.sh && php -f /path/to/script.php

关于php - 是否可以使用 PHP CLI 获取 *.sh 文件并在 PHP 脚本中访问导出的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302958/

相关文章:

java - 如何从 Jython 执行交互式 shell?

gradle - 环境变量未传播到Gradle测试环境中

java - System.getenv() 环境变量存在时返回 null

javascript - 重定向至手机版,同时仍保留域名

php - 为 Laravel 4 RESTful API 身份验证实现 token

php - mysql连接3个表并计数

c - 如何在 environ 中使用 execvp/execlp

php - 具体设置 exec() 的最大执行时间

c++ - 无法从 C/C++ 程序访问环境变量

php - 仅当该确切记录尚不存在时才插入 MySQL 记录