在 NGINX 上,PHP fastcgi 直接跳过 memcache.ini 和 mongo.ini 文件

在 NGINX 上,PHP fastcgi 直接跳过 memcache.ini 和 mongo.ini 文件

我遇到了一个奇怪的问题,我似乎无法弄清楚,并且在 Google 上搜索了很多并进行了研究,但毫无结果。

我已通过 spawn-fcgi 在 nginx(cent os 5)上成功运行了 php-fastcgi。但是,我尝试加载 memcache 和 mongo php 扩展,出于某种原因,nginx 直接跳过了 /etc/php.d/ 中的 ini 文件。我知道 memcache 和 mongo 扩展已正确安装,因为同一台机器上的 apache 实例可以正常加载它们。我在想,也许我需要从源代码构建 php,并专门将它们包含在 ./configure 中。我有点不敢这么做,因为我不确定这会对安装产生什么影响,因为我从 yum 安装了所有东西。

最后,所有权限都检查完毕,我甚至尝试将扩展直接放入 /etc/php.ini,但没有成功,问题仍然存在。

只是想补充一点,仅仅重新启动 nginx 服务来加载模块(如必需的)是不够的。

以下是 NGINX 上的 phpinfo() 显示的内容:

配置文件(php.ini)路径:/etc/php.ini

扫描此目录以查找其他 .ini 文件:/etc/php.d

解析的其他 .ini 文件:/etc/php.d/dbase.ini、/etc/php.d/dom.ini、/etc/php.d/gd.ini、/etc/php.d/imap.ini、/etc/php.d/json.ini、/etc/php.d/mbstring.ini、/etc/php.d/mysql.ini、/etc/php.d/mysqli.ini、/etc/php.d/pdo.ini、/etc/php.d/pdo_mysql.ini、/etc/php.d/pdo_sqlite.ini、/etc/php.d/xmlreader.ini、/etc/php.d/xmlwriter.ini、/etc/php.d/xsl.ini

以下是 Apache 上的 phpinfo() 显示的内容:

配置文件(php.ini)路径:/etc/php.ini

扫描此目录以查找其他 .ini 文件:/etc/php.d

解析的其他 .ini 文件:/etc/php.d/dbase.ini、/etc/php.d/dom.ini、/etc/php.d/gd.ini、/etc/php.d/imap.ini、/etc/php.d/json.ini、/etc/php.d/mbstring.ini、/etc/php.d/memcache.ini、/etc/php.d/mongo.ini、/etc/php.d/mysql.ini、/etc/php.d/mysqli.ini、/etc/php.d/pdo.ini、/etc/php.d/pdo_mysql.ini、/etc/php.d/pdo_sqlite.ini、/etc/php.d/xmlreader.ini、/etc/php.d/xmlwriter.ini、/etc/php.d/xsl.ini

..注意 apache 加载了 memcache.ini 和 mongo.ini,而 nginx 没有。可能是什么问题?

答案1

如果您正在使用 fast-cgi,请确保重新启动它。

答案2

创建一个新的 phpinfo() 文件,在 Apache 和 Nginx 上运行它并检查“已加载的配置文件”、“已解析的附加 .ini 文件”、“扫描此目录以查找附加 .ini 文件”等。

如果路径不同,您应该检查这些文件之间的差异并修改 nginx 使用的文件。

phpinfo() 文件示例:

<?php
phpinfo();
?>

答案3

/etc/init.d/php5-fpm restart我也遇到过这种情况。Spock 说得对 - 重新启动 nginx 与 PHP 的连接。我使用的是 PHP-FPM,所以在我的情况下应该是:

相关内容