我遇到了一个奇怪的问题,我似乎无法弄清楚,并且在 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,所以在我的情况下应该是: