PHP – 有关一个PHP里Memcache的诡异问题

事情,是这样的。

环境:某服务器
系统:CentOS 64位

现在想搭建一个PHP+Nginx+Memcached的环境。

随后分别用yum安装了这三个东西

接下来修改了些配置文件,如:

然后重启Nginx服务:

然后访问一个基于Yii的系统,提示如下错误:

CException

那么很明显,是让我加载PHP的memcache扩展。

那么接下来想到了要给PHP安装memcache扩展,于是找了下

于是看到了“php-pecl-memcache.x86_64”,装。

装好后修改php.ini,添加:

然后重启Nginx,重新打开系统,依旧报同样的错误。

此时想到查一下PHP以及系统内是否已经安装了针对PHP的memcache,首先看了下系统内:

然后看PHP:

首先看到了这里有个Warning:Module ‘memcache’ already loaded in Unknown on line 0

虽然是Warning但需要排除下问题,于是找到了在“/etc/php.d/memcache.ini”中同样存在了“extension=memcache.so”这句话,把“/etc/php.ini”中添加的“extension=memcache.so”注释之后再“php -m”则无此Warning,但问题依旧,故和这个Warning无关。

然后在找,新建了两个程序:memcache.php-用于测试memcached是否正常,和,phpinfo.php,如下:

首先直接运行,结果如下:

看样子Memcached和PHP是可以愉快的在一起玩耍的。那么再刷新系统页面,报错依旧。

于是在网页中打开“memcache.php”,但是页面一片空白无任何输出。

随后调试看到程序在“$memcache = new Memcache();”一句终止,这么看来PHP和Memcached还是没玩耍在一起。

于是找出了phpinfo在浏览器里看:

phpinfo

找不到memcache。联想到刚才两种执行方式的区别,于是再在服务器里看phpinfo:

这么看也有。

好吧,继续找线索。

在phpinfo中找到了如下的参数:

此时好像找到问题了。

应该是PHP会加载/etc/php.d/目录下的所有配置文件,但是漏过了同在/etc/php.d/目录下的memcache.ini和memcached.ini。(在/usr/lib64/php/modules/中能够找到扩展文件:memcache.so)

但是转念想也不对,因为我把“extension=memcache.so”加在php.ini中也会报错。

那么,问题依旧,待续。

2BContinued.


 

妈蛋,诡异个锤子,重启服务器解决一切问题。

    分享到:

发表评论

电子邮件地址不会被公开。 必填项已用*标注