通过PHP fpm+;没有可用的环境变量;nginx

通过PHP fpm+;没有可用的环境变量;nginx,php,nginx,environment-variables,Php,Nginx,Environment Variables,我尝试通过以下方式修改php.ini: variables_order = "GPCSE" register_globals = On 但是所需的PATH变量既不在$\u ENV中,也不能通过getenv('PATH')访问 我正在Ubuntu 10.04上运行Nginx+PHP-FPM 注意: 在console中执行以下命令会得到正确的结果: php-r“echo getenv('PATH') 我猜PATH是bash的环境变量,但只要php fpm不是通过bash启动的,它就没有必需的变量

我尝试通过以下方式修改php.ini:

variables_order = "GPCSE"
register_globals = On
但是所需的
PATH
变量既不在
$\u ENV
中,也不能通过
getenv('PATH')
访问
我正在Ubuntu 10.04上运行Nginx+PHP-FPM

注意: 在console中执行以下命令会得到正确的结果:

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.ini中指定它(尽管您可能需要一个特定的路径,而不是包含所有内容)

include_path=“.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/fo‌​ta/Development/adt-bundle-linux-x86_64-20130917/sdk/platform tools”


我在将自己的云安装升级到8.1版时遇到了这个问题

他们描述了他们的解决方案

总结是:在php5 fpm config文件夹中找到您的
www.conf
文件(对于Ubuntu,这是
/etc/php5/fpm/pool.d/www.conf
),并取消注释所需的env[PATH]行


可以选择使用
php-r“echo getenv('PATH');”的输出更新变量的内容。默认情况下,php-FPM清除环境变量(从www.conf):

您可以取消注释最后一行,将
clear_env
设置为
no
,但如果愿意,您可以只设置所需的环境变量:

env[PATH] = $PATH

为什么要激活
register\u globals
?嗯,我只是尝试了任何方法来让它工作。路径不是cwd。我的路径看起来像:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/fota/Development/adt-bundle-linux-x86_64-20130917/sdk/platform toolsary,我感到困惑。似乎路径来自linux,您需要直接访问字符串还是只是包含文件夹的列表?我已经更新了我的答案,以适应后者的情况。谢谢你的回答,但路径变量会不时变化,我不想每次都修改php.ini:(我确信有一种方法可以包含bash的环境变量PATH。
env[PATH] = $PATH