我尝试通过以下方式修改 php.ini:
variables_order = "GPCSE"
register_globals = On
但是所需的 PATH
变量既不在 $_ENV
中,也不能通过 getenv('PATH')
访问。
我在 Ubuntu 10.04 上运行 Nginx + PHP-FPM。
注意: 在控制台中执行以下命令会给出正确的结果:
php -r "echo getenv('PATH');"
我猜 PATH
是 bash 的环境变量,但只要 php-fpm 不是通过 bash 启动,它就没有必需的变量。有什么方法可以包含它们吗?
谢谢。
更新#1: 作为临时解决方案,我发现 PATH 变量存储在“/etc/environment”文件中。所以我只是从那里开始阅读。如果有人需要代码:
preg_match('/^(PATH)="?([^"]+)"?$/i', file_get_contents('/etc/environment'), $match);
putenv($match[1]."=".$match[2]);
最佳答案
默认情况下,PHP-FPM 清除环境变量(来自www.conf):
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no
您可以取消注释最后一行以将 clear_env
设置为 no
,但如果您愿意,您可以只设置所需的环境变量:
env[PATH] = $PATH
关于php - PHP-fpm+nginx 没有可用的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659675/