chi*_*dit 7 php nginx environment-variables php-fpm env
我定义一些环境变量,像APP_ENV在我的/etc/environment文件中,在我的ArchLinux的。
如果我输入printenv,我会看到它们。
我创建了这个简单的测试文件,名为… test.php
<?php
var_dump(getenv('APP_ENV'));
var_dump(getenv());
Run Code Online (Sandbox Code Playgroud)
如果我运行php test.php,一切正常,我会看到我的 ENV 变量。
但是当我尝试通过 HTTP 访问文件时……我的环境中什么也没有!
当然,我已经改变了/etc/php/php-fpm.d/www.conf设置clear_env = no
这些是受影响的行:
; 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
Run Code Online (Sandbox Code Playgroud)
而且我已经重新启动了php-fpm和nginx服务,但是……我的环境中仍然没有任何内容。脚本返回bool(false)。
所以......我错过了什么吗?
这是我的 php-fpm 版本:
php-fpm --version
PHP 7.2.6 (fpm-fcgi) (built: May 26 2018 07:45:18)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
还有我的 Nginx 版本
nginx -v
nginx version: nginx/1.14.0
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能在 PHP-FPM 上下文中访问我的 env 变量?
非常感谢!
小智 7
您可以在 /etc/php/php-fpm.d/www.conf 中设置环境变量,如下所示:
env[APP_ENV] = development
然后您就可以getenv('APP_ENV')像预期的那样获得它。
| 归档时间: |
|
| 查看次数: |
12292 次 |
| 最近记录: |