我已经安装了nginx 1.2.2和PHP 5.4.4。我已经使用运行为FastCGI的nginx配置了PHP。
nginx config snippet:
location ~ \.php$ {
root E:/Websites/localhost;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME E:/Websites/localhost/$fastcgi_script_name;
include fastcgi_params;
}
我在同一系统上运行了许多本地虚拟站点。为了自定义每个要求,我在每个站点根文件夹中创建了.user.ini文件,根据PHP文档也应该适用于子文件夹。
请注意,这是一个开发环境而不是直播。所以我可以灵活地定制许多东西。
当我从浏览器访问任何网站时,除非我不深入某个子文件夹,否则它可以正常工作。似乎.user.ini在子目录中不起作用 - 至少在我的配置中。
根据PHP文档(http://www.php.net/manual/en/configuration.file.per-user.php):
除了主要的php.ini文件外,PHP还会扫描每个文件中的INI文件 目录,从所请求的PHP文件的目录开始,以及 一直到当前的文档根目录
有没有人在nginx下配置.user.ini - 请你帮我解决。
注意:有人在2009年报告了一个错误:https://bugs.php.net/bug.php?id=50374
PHPInfo()说(在root用户和子文件夹中):
*服务器API: CGI / FastCGI
* user_ini.filename: .user.ini (本地和主要)
php_sapi_name()说 cgi-fcgi
这些值存在于根文件夹和子目录的phpinfo()中。所以PHPInfo()没有区别。
进一步确认它是以 CGI / FastCGI 运行的根文件夹是从 .user.ini 而不是子文件夹进行配置。
// .user.ini
auto_prepend_file = "E:\Websites\localhost\user.ini.php"
和
// user.ini.php
<?php
printf('Hi from: %s', __FILE__);
?>
这实际上可能是一个错误,但有人用这种方式配置了nginx的PHP,并没有遇到问题。请求在这种情况下请分享版本号和平台。
答案 0 :(得分:0)
您只是部分引用了您链接到的PHP文档。它还说These files are processed only by the CGI/FastCGI SAPI
。
我怀疑你没有使用CGI / FastCGI SAPI,而是使用其他一些SAPI ......也许是PHP-FPM SAPI?
正如您从上面所知,运行FastCGI并不等同于使用CGI / FastCGI SAPI。您还可以使用其他SAPI(如PHP-FPM)运行FastCGI。
BTW SAPI =服务器API。你可以在phpinfo文件中找到你的。
答案 1 :(得分:0)
这实际上是一个比nginx更大的问题,但是可以使用永久解决方案。添加指令选项的替代ini_set方法具有很大的局限性,因此它不是一个很好的长期解决方案。谢谢。 http://www.ait-pro.com/aitpro-blog/4349/misc-projects/wordpress-tips-tricks-fixes/php5-3-x-php5-4-x-user-ini-file-does-not-work-known-php5-3-x-user-ini-fastcgi-wordpress-zend-issue/