Sat*_*Sat 4 php nginx environment-variables
我试着用以下方式修改php.ini:
variables_order = "GPCSE"
register_globals = On
Run Code Online (Sandbox Code Playgroud)
但是所需的变量(PATH)既不在$ _ENV数组中,也不能通过getenv('PATH')接受.标题说我正在运行nginx + php-fpm(Ubuntu 10.04)
PS在控制台中执行下一个comamnd会得到正确的结果:php -r"echo getenv('PATH');"
我猜PATH是bash的环境变量,但只要php-fpm不是通过bash启动它就没有必需的变量.有没有办法包括它们?
谢谢.
Upd#1 作为临时解决方案,我发现PATH变量存储在'/ etc/environment'文件中.所以我只是从那里读它.如果有人需要代码:
preg_match('/^(PATH)="?([^"]+)"?$/i', file_get_contents('/etc/environment'), $match);
putenv($match[1]."=".$match[2]);
Run Code Online (Sandbox Code Playgroud)
Aym*_*Dev 12
默认情况下,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
Run Code Online (Sandbox Code Playgroud)
您可以取消注释最后一行以设置clear_env为no,但如果您愿意,也可以仅设置所需的环境变量:
env[PATH] = $PATH
Run Code Online (Sandbox Code Playgroud)
您可以通过包含路径指定它:http://www.php.net/manual/en/ini.core.php#ini.include-path
\n\n您可以在 php.ini 中指定它(尽管您可能需要特定路径而不是包含所有内容)
\n\n\n\ninclude_path=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/fo\xe2\x80\x8c \xe2\x80\x8bta/开发/adt-bundle-linux-x86_64-20130917/sdk/平台工具“
\n
| 归档时间: |
|
| 查看次数: |
5605 次 |
| 最近记录: |