2009-12-14 139 views
3

我已經在我的本地主機上安裝了drupal。它在2個月前運行良好,但現在發生了一些事情,我不知道爲什麼。如果你能幫助我,我將非常感激。提前致謝。Drupal - 致命錯誤:類'Memcache'找不到

完整的錯誤看起來是這樣的:

Fatal error: Class 'Memcache' not found in /srv/www/htdocs/modules/memcache/dmemcache.inc on line 177

1)PHP -m給出了這樣的:

[PHP Modules]
bz2
ctype
date
dom
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
pcre
PDO
pdo_mysql
pdo_sqlite
Reflection session SimpleXML SPL SQLite standard sysvsem tokenizer xml xmlreader xmlwriter zip zlib

[Zend Modules] none

2)Memcached是通過包管理器進行安裝。

3)用於drupal的memcache模塊安裝

我做錯了什麼?謝謝。

回答

1

非常感謝您的回答 - 我最終解決了這個問題。 以下是openSUSE 11.1的解決方案。

  1. 爲PHP安裝memcache的擴展:

    #if apt-get, rpm, or yum doesn't work 
    cd /usr/src/ 
    wget http://pecl.php.net/get/memcache-2.2.5.tgz 
    tar -zxvf memcache-2.2.5.tgz 
    cd memcache-2.2.5 
    phpize5 
    ./configure --enable-memcache 
    make 
    make install 
    cp modules/memcache.so /usr/lib/php5/extensions/ 
    
    # Note: packaged extension modules are now loaded via the .ini files 
    # found in the directory /etc/php5/conf.d/ 
    touch /etc/php5/conf.d/memcache.ini 
    echo 'extension=memcache.so' > /etc/php5/conf.d/memcache.ini 
    

    現在你應該重新啓動的Apache2服務

  2. 安裝memcached的守護PHP並運行它作爲一個守護進程。

  3. 安裝爲Drupal內存緩存的插件(這裏所有的指令:http://drupal.org/project/memcache

UPD。小心升級PHP:插入模塊可能不適用於新版本 - 您應該重新編譯它們。但不知何故,「梨安裝-f pecl/memcache」爲我做了伎倆:)

0

看來你的memcache drupal模塊期望在提及的inc文件中有一個類可用。

  • 您是否升級了您的drupal模塊?
  • 在這種情況下,最好查看drupal.org上模塊的問題點。

它看起來像是drupal模塊,這是問題所在。我猜測升級出了問題。

編輯:
我在看模塊拿了,我在我的iPhone,所以無法通過代碼看。你的問題是Drupal找不到Memcache類。此修復程序在安裝過程的第二步中定義。

2. Install the PECL memcache extension for PHP. This must be version 2.2.1 or higher or you will experience errors.

要麼你現在錯過了這個,要麼是安裝有問題。無論如何,Drupal無法找到在此擴展中定義的Memcache,這就是爲什麼你會得到致命錯誤。

+0

THX,我我會嘗試更新它,但不應該是問題,因爲它一切正常。我確定這個問題在配置php,memcached和其他類似的東西:) – soshial 2009-12-14 22:43:33

4

我與googletorp召集,該問題似乎依賴於memcache安裝。試試這個:

#if apt-get, rpm, or yum doesn't work 
cd /usr/src/ 
wget http://pecl.php.net/get/memcache-2.2.4.tgz 
tar -zxvf memcached-2.2.4.tgz 
cd memcached-2.2.4 
phpize && ./configure --enable-memcache && make 
cp modules/memcache.so /usr/lib/php/modules/ 

# Note: packaged extension modules are now loaded via the .ini files 
# found in the directory /etc/php.d 
touch /etc/php.d/memcached.ini 
echo 'extension=memcache.so' > /etc/php.d/memcached.ini 

service httpd restart 

上面的過程已經從評論到official memecache documentation的頁面被殘忍地複製。它的日期是11.12.09。

+0

如果我在openSUSE 11.1上工作,是否應該修改代碼? Thx。 – soshial 2009-12-16 19:15:20

+0

我不知道,因爲我沒有在我的任何服務器上運行openSUSE。然而唯一看起來很重要的事情是你的php安裝在'/ usr/lib/php'中。其餘的都看起來像我的樣板。 – mac 2009-12-16 19:45:19

0

只需將extension=memcached.so添加到您的php.ini即可。這個文件的位置可以使用phpinfo();

確保你以後重新啓動apache。

0

我的意思是memecache可能安裝在您的機器上,但它沒有正確編譯與PHP 有這個問題之前與memecache。 查詢here瞭解更多詳情

2

一位同事幫助我今天這個問題,我使用Drupal & Drush(命令行工具),有時MAMP。

嘗試:

echo $PHPRC 

如果它出現空白,則它保存在您的〜/ .profile文件或您的*〜/ .bash_profile中*配置文件:

export PHPRC='/Library/Application Support/appsolute/MAMP PRO/conf/php.ini' 
相關問題