2009-07-23 14 views
15

我安装了Memcache并为通过Apache(v2.2)运行的PHP应用程序工作,但是当我尝试在命令行中运行.php文件时出现此错误: 94在命令行中找不到'Memcache'PHP脚本

Fatal error: Class 'Memcache' not found in /usr/local/Matters/app/matters-common/connection.php on line 94 

线路是:

$memcache = new Memcache; 

其他信息:

的CentOS 5.2
PH P 5.2.5(CLI)(内置:二○○八年二月二十零日21点13分12秒)
Zend引擎V2.2.0,版权所有(C)1998-2007 Zend技术
的Apache v2.2.8

回答

25

大概你有单独的php.ini文件设置为Apache和命令行(CLI)。

如果是这样,您需要将以下添加到您的CLI php.ini文件:

extension=memcache.so 

在Ubuntu上它在/etc/php5/cli/php.ini

如果它的工作再如果在命令行上运行php -m,则memcache应显示在模块列表中。

或者,您可以使用相同的内容创建一个文件/etc/php5/cond.d/memcache.ini

+0

然PHP -m和它没有显示 – rjstelling 2009-07-23 12:19:42

+0

是工作的任何其他模块CLI?是否在cli php.ini文件中设置了“extension_dir”?如果memcache.so位于默认目录(对我而言, /usr/lib/php5/20060613 /),则可以将extension_dir注释掉。 – 2009-07-23 12:27:30

5

这是可能的你有一个单独的用于CLI模式的php.ini文件。该文件可能不包含memcache扩展名。

0

为了简单起见,我用:

php -c /etc/php.ini ./cli-script.php 
2

我也有这样那样的错误,我也做了PHP -i | grep memcache,它表示memcache已启用,但我解决问题的方案是编辑php.ini时,我只是将extension_dir =“./”行修改为扩展目录的完整路径,现在看起来像这样, extension_dir =“/ usr/local/lib” - 你需要检查php的扩展目录所在的位置,并确保memcache.so在那里..

然后我简单地重新启动httpd,唉,问题没有了。

您可以在这里查看详细步骤:

http://joemarie-aliling.com/223/php-programming/php-memcache-not-found-problem/

0

如果你不知道哪个php.ini里的命令行使用,类型PHP -i。您将获得的设置,其中靠近列表,你会看到上方某处正在使用哪个php.ini的一个长长的清单:

Configuration File (php.ini) Path => /Applications/MAMP/bin/php/php5.3.6/conf 
Loaded Configuration File => /Applications/MAMP/bin/php/php5.3.6/conf/php.ini 
Scan this dir for additional .ini files => (none) 
Additional .ini files parsed => (none)