【问题标题】:php's .user.ini with nginx and subdirectory带有 nginx 和子目录的 php 的 .user.ini
【发布时间】:2012-07-06 18:50:22
【问题描述】:

设置

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

nginx配置sn-p:

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 并且没有遇到问题。在这种情况下请求分享版本号和平台。

【问题讨论】:

  • 是的,Bruni 在 2 年多前被报告后,它看起来仍然是一个错误。但我把希望寄托在可能遇到同样问题的 nginx 用户身上。
  • 这不是错误。请参阅下面的帖子。

标签: php nginx fastcgi ini


【解决方案1】:

您仅部分引用了您链接到的 PHP 文档。它还写着These files are processed only by the CGI/FastCGI SAPI

我怀疑您使用的不是 CGI/FastCGI SAPI,而是其他一些 SAPI……也许是 PHP-FPM SAPI?

您可能已经从上面了解到,运行 FastCGI 并不等同于使用 CGI/FastCGI SAPI。您还可以使用 PHP-FPM 等其他 SAPI 运行 FastCGI。

BTW SAPI = 服务器 API。您可以在 phpinfo 文件中查找您的。

【讨论】:

  • 不确定是配置错误还是只是一个错误。但是 php_sapi_name() 返回 cgi-fcgi 并且它只在根文件夹中有效,在子目录中无效。
  • 适用于此的 SAPI 称为 CGI/FastCGI。在 phpinfo 文件中查找您的精确文件,而不是 php_sapi_name() 输出。由于您最有可能使用 php-fpm,因此您可以尝试使用链接文档页面上 hotmail dot com 上的 Showerheadsuk 的说明。
  • 在我的问题中添加了一些代码和 phpinfo() 值。希望这有助于简化问题。 phpinfo() 还说:服务器 API:CGI/FastCGI。
  • 嗨。您还没有说您实际上是如何运行 PHP 的。即,您是否使用 PHP-FPM,如果没有,具体如何?
【解决方案2】:

这实际上是一个比 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/

【讨论】:

  • 您必须披露与外部网站的从属关系。
  • @BeauGrantham - 我查看了 Stackoverflow 帮助和常见问题解答,但没有找到任何有关“披露与外部网站的从属关系”的帮助信息。你能澄清一下这个规则是什么吗?谢谢。
  • 这不是 SO 规则,而是大多数职业共有的一般道德规则,在这些职业中,社区诚信和信任对于在这些职业环境(例如我们的环境)中信任解决方案和建议至关重要 - standards.ieee.org/faqs/affiliation.html跨度>
  • 如果您在 2020 年之后阅读此解决方案,请注意不要再使用 PHP 5.X — æons 已弃用它。
猜你喜欢
  • 2018-04-29
  • 2022-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
相关资源
最近更新 更多