Memcached

PHP 中的 Memcached 擴展錯誤

  • November 25, 2010

昨天我遷移到 Rackspace (CentOS 5.5)。一切都已經配置好(apache、php、mysql、memcached)並且執行良好。

我唯一忘記並最終安裝的是郵件伺服器(iRedMail)。在那之後,出於某種原因,memcached 有點搞砸了:

$$ root@mail php.d $$# php -v

PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP    compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
PHP 5.2.10 (cli) (built: Nov 13 2009 11:44:05)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

我嘗試重新安裝 memcached:

yum install memcached
yum install php-pecl-memcache
service httpd restart

但是錯誤資訊一直顯示。

我在 php.ini extension=memcache.so中指向這個擴展,而memcache.so在**/usr/lib64/php/modules**(擴展目錄)中。一位朋友告訴我檢查缺少的庫依賴項:

$$ root@mail modules $$# ldd -v memcache.so

linux-vdso.so.1 =>  (0x00007fff4e915000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5b90c2b000)
/lib64/ld-linux-x86-64.so.2 (0x0000003aa6800000)

Version information:
./memcache.so:
   libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
   libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
   libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
/lib64/libc.so.6:
   ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
   ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

linux-vdso.so.1與我的問題有關嗎?如果是這樣,我該如何安裝它?如果不是,還有什麼可能導致這種行為?

謝謝你的幫助。

如果您想立即獲得正確的版本,請確保您已安裝 php-devel

pecl install memcache

PHP 5.2.10 在預設的 CentOS 儲存庫中不可用,因此您上面的輸出表明它是使用非標準儲存庫更新的(我認為 Remy 提供 5.2.10)。

問題是儲存庫似乎只是暫時啟用,因此您使用不同的儲存庫安裝了 memcache(可能是 iRedMail 的副作用),因此對於不同版本的 PHP。

試試:

yum --enablerepo=* update memcached php-pecl-memcache

根據 /etc/yum.repos.d 中配置文件的有效性,它可能不起作用,它可能需要您更具體地了解儲存庫。

引用自:https://serverfault.com/questions/206038