';Memcache';在命令行PHP脚本中找不到

';Memcache';在命令行PHP脚本中找不到,php,apache,command-line,memcached,Php,Apache,Command Line,Memcached,我已经安装了Memcache,并通过Apache(v2.2)运行PHP应用程序,但是当我尝试在命令行中运行.PHP文件时,我遇到了以下错误: Fatal error: Class 'Memcache' not found in /usr/local/Matters/app/matters-common/connection.php on line 94 第94行是: $memcache = new Memcache; 其他信息: CentOS 5.2 PHP 5.2.5(cli)(构建时间:

我已经安装了Memcache,并通过Apache(v2.2)运行PHP应用程序,但是当我尝试在命令行中运行.PHP文件时,我遇到了以下错误:

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

$memcache = new Memcache;
其他信息:

CentOS 5.2
PHP 5.2.5(cli)(构建时间:2008年2月20日21:13:12)
Zend Engine v2.2.0版权所有(c)1998-2007 Zend Technologies

Apache v2.2.8

对于CLI模式,您可能有一个单独的php.ini文件。此文件可能不包含memcache扩展名

您可能为apache和命令行(cli)设置了单独的php.ini文件

如果是,则需要将以下内容添加到cli php.ini文件中:

extension=memcache.so
在Ubuntu上,它位于/etc/php5/cli/php.ini中

如果运行正常,那么如果在命令行上运行
php-m
,memcache应该出现在模块列表中


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

为了简单起见,我使用了:

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

我确实有这种错误,我也做了php-I | grep memcache,它说memcache已启用,但我解决问题的解决方案是,当我编辑php.ini时,我简单地修改了extension_dir=“./”行到extensions目录的完整路径,现在看起来像这样,extension_dir=“/usr/local/lib”--您需要检查php的扩展目录所在的位置,并确保memcache.so存在

然后我简单地重启了httpd,唉,问题消失了

您可以在此处查看详细步骤:


如果您不知道命令行使用的是哪个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)

是否有其他模块可用于cli?cli php.ini文件中是否设置了“extension_dir”?如果memcache.so在默认目录中(/usr/lib/php5/20060613/对于我),那么您可以将扩展名_dir注释掉。在开发环境中,我倾向于使用apache文件的符号链接替换cli php.ini,因此我只有一个文件(默认情况下,Ubuntu上的唯一区别是命令行上的内存限制设置为无限)。