我尝试用以下方式修改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]);
型
4条答案
按热度按时间dm7nw8vv1#
默认情况下,PHP-FPM会清除环境变量(来自www.conf):
字符串
您可以取消注解最后一行以将
clear_env
设置为no
,但如果您愿意,您可以只设置所需的环境变量:型
yrefmtwq2#
我在将OwnCloud安装升级到8.1版本时遇到了这个问题。
他们在文档中描述了一个修复程序
在php5-fpm config文件夹中找到
www.conf
文件(对于Ubuntu,这是/etc/php5/fpm/pool.d/www.conf
),并取消注解所需的env[PATH]行。可选地,使用
php -r "echo getenv('PATH');"
的输出更新变量的内容t3psigkw3#
您可以通过包含路径来指定它:http://www.php.net/manual/en/ini.core.php#ini.include-path
您可以在php.ini中指定它(尽管您可能需要一个特定的路径,而不是包括所有内容)
包括_path=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/fo bundle/Development/adt-bundle-linux-x86_64-20130917/sdk/platform-tools“
kupeojn64#
在我的情况下,问题是nginx配置中的php-fpm端口不正确:我将fastcgi_pass设置为9001(
pm.status_listen
)而不是9000(listen
)。我花了几乎整个工作日才理解问题的原因,因为配置正常,除了一件事:phpfpm不传递外部环境变量。