2012-05-27 56 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路徑,但有些錯誤顯示,你瞭解它們嗎? –