坑爹的Fatal error Class 'Memcached' not found错误

Published: Tags: PHP

前段时间遇到这么一个坑爹的情况:(PHP 5.3.5有问题,但PHP 5.2.却是正常)

有一个PHP脚本(有用到Memcached客户端),通过浏览器在网页调用的时候是可以正常执行的;但如果直接通过命令行用php /test/mem.php却会报一个『Fatal error Class ‘Memcached’ not found』的错误。

这种情况和网络上找到的资料所说的相差甚远,我在浏览器中调用info.php可以看到Memcached已经加载,但用php --info |grep -i memcached却坑爹的没有反应。 费了我一天的时间分析找原因,居然白痴得最后才去看看两者之间的启动和执行有什么不同,但这么一找还真找到了问题所在。

在进程中正在运行的PHP进程是用一个SHELL调用的,里面有详细的调用参数,其中有一个是『-c /usr/local/services/php-5.3.5/lib/php.ini』。 而我在命令行调用是没有带任何参数就启动的,但我想不明白的是为什么我的PHP-5.2.6版本能在命令行中不带任何参数直接运行这个脚本。 直到我查看了『php –ini』和『php –info』,对比了两者的编译参数。 有一个坑爹的--with-config-file-path=/usr/local/services/php-5.3.5/lib/php.ini, 而不是正常的--with-config-file-path=/usr/local/services/php-5.3.5/lib,所以导致了下面的情况:

PHP 5.2.6: Configuration File (php.ini) Path: /usr/local/services/php-5.2.6/lib Loaded Configuration File: /usr/local/services/php-5.2.6/lib/php.ini

PHP 5.3.5: onfiguration File (php.ini) Path: /usr/local/services/php5.3.5/lib/php.ini Loaded Configuration File: (none)

这样一切问题就迎刃而解了,WELL DONE!