2012-05-27 55 views
3

我通过ssh安装内存缓存,具有:致命错误:类 '内存缓存' 未找到(安装了PECL)

$ pecl install memcache 

而这是输出:https://pastee.org/w63sy

而加入这一行到etc/php.ini

extension=memcache.so 

,并试图初始化时:

/* MEMCACHE */ 
$memcache = new Memcache(); 
$memcache->pconnect('localhost',11211); 

我得到:

Fatal error: Class 'Memcache' not found in /home/piscolab/public_html/website.com/includes/sql.php on line 25 

我在做什么错?

我发现这个问题,但问题是关于他的共享服务器。我在VPS下。

运行:php -i | grep php.ini

[[email protected] ~]# php -i | grep php.ini                                                                                                                                             
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/memcache.so' - /usr/lib/php/modules/memcache.so: cannot open shared object file: No such file o 
r directory in Unknown on line 0                                                                                                                                                
Configuration File (php.ini) Path => /etc                                                                                                                                       
Loaded Configuration File => /etc/php.ini                                                                                                                                       
[[email protected] ~]#     

发现memcache.so(无输出)

[[email protected] ~]# find/-type f -name memcache*.so'                                
[[email protected] ~]# find/-type f -name memcache*.so                                 
[[email protected] ~]# 
+1

您是否在将该行添加到配置后重新启动了Apache? – DCoder

+0

负面!我现在就试试。谢谢! –

+0

我重新启动了虚拟机,没有任何更改@DCoder和/etc/init.d/apache2重新开始记录我没有这样的文件或目录:S –

回答

3

鉴于错误消息的输出,它看起来像缺少zlib开发库,或者至少它们不在通常可以通过configure自动找到的位置。

既然你是在CentOS,尝试用这个命令安装库:

yum install zlib-devel 

这将安装这是需要的memcache的zlib库。尝试在安装zlib库后重新运行pecl安装程序。

1

如果你给通过的phpinfo一些更多的信息()或php_config,更具体地说,它可能会帮助,你的安装看到了memcache库,并且你的lib路径是正确的。

php-config 

会告诉你更多,这里有趣是使用的PHP INI路径的lib路径当您使用--configure选项 PHP INI路径将显示,子选项--with-配置文件路径(在我的具体情况下为/ etc/php5/apache2) 并且lib路径将显示为--extension-dir

eg

php-config --extension-dir 

php-config --configure-options | grep -o 'with-config-file-path[^ ,.]*' | grep -o '[^=.]*$' 

所以使用我的示例我的LIB路径被设置为

/usr/lib中/ PHP5/20090626 + LFS和用于我的系统中的

ls /usr/lib/php5/20090626+lfs/mem* 

命令揭示:

我的php.ini文件位于/etc/php5/apache2/php.ini.

的phpinfo()函数PHP函数(只放在一个文件并查看它)也揭示了内存缓存的支持,并加载“memcached的支持,使”(我特意使用memcached的扩展,而不是内存缓存)

你要知道,你的webserver可能被配置为使用不同的php.ini路径(并因此使用文件)而不是命令行,因此请验证两者。还要确保将extension = memcache.so放在正确的位置,因为许多发行版将它放在/etc/php5/conf.d/memcache.ini中可能存在一些差异吗?

+0

哇!哥们,谢谢你的回答,但我有点迷路了..我会运行你发布的ssh命令并且会让你知道。但你基本上说我的php.ini不是apache使用的那个? –

+0

它可能是你的问题的一个可能的答案,是 –

+0

请仔细检查我的编辑。它似乎是正确的php.ini路径,但有些错误显示,你了解它们吗? –

相关问题