1

设置

我已经安装了 nginx 1.2.2 和 PHP 5.4.4。我已经将 PHP 配置为运行为 FastCGI 的 nginx。

nginx 配置片段:

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() 说(在根目录和子文件夹中):
* 服务器 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 并且没有遇到问题。在这种情况下请求分享版本号和平台。

4

2 回答 2

1

您只部分引用了您链接到的 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 文件中查找您的文件。

于 2012-07-07T06:21:38.510 回答
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/

于 2012-08-11T20:14:54.830 回答