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

PHP2012-03-15 11:12

前段时间遇到这么一个坑爹的情况:(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!


原文链接: http://blog.jtwo.me/pit-dad's-fatal-error-Class-'Memcached'-not-found