2012-12-23 51 views
3

原帖設置使用PECL

首先,memcached的用於LAMPP在Linux上,我想安裝memcached的,沒有內存緩存。

我試圖建立memcached的,因爲昨天在Ubuntu 12.10與我LAMPP服務器一起工作。我已經遵循幾乎所有我能找到的教程。最近的事情,我試圖做的是:

在終端

apt-get install libmemcached-dev 
cd /opt/lampp 
./bin/pecl install memcached 

,然後在php.ini文件中添加擴展=「memcached.so」。在此之後,我重新啓動LAMPP使用/opt/lampp/lampp restart

當我試圖在我的瀏覽器,它剛剛下載到打開PHP腳本。運行tail -20 /opt/lampp/logs/php_error_log這是我所看到的:

PHP Warning: PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20100525/memcached.so' - /opt/lampp/lib/php/extensions/no-debug-non-zts-20100525/memcached.so: wrong ELF class: ELFCLASS64 in Unknown on line 0 

看來this guy有同樣的問題,但不同的擴展名。當我嘗試編譯擴展的32位版本的使用:

phpize 
CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure 
make 

make引發以下錯誤:

/usr/bin/ld: skipping incompatible /usr/local/lib/libmemcached.so when searching for -lmemcached 
/usr/bin/ld: cannot find -lmemcached 
/usr/bin/ld: cannot find -lz 
collect2: error: ld returned 1 exit status 
make: *** [memcached.la] Error 1 

的問題是,我甚至不知道我是不是上正確的路徑。如果有人能夠寫出一步一步的指導方法,或者只是告訴我問題出在哪裏,那就太棒了。

UPDATE

執行sudo dpkg --add-architecture i386 sudo apg-get update sudo apt-get install libmemcached-dev:i386 libz-dev:i386phpize CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure make的memcached後編譯罰款。但它仍然不起作用。檢查PHP的錯誤日誌後我再次得到這個

PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20100525/memcached.so' - /opt/lampp/lib/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/i386-linux-gnu/libstdc++.so.6) in Unknown on line 0 
+1

您已經安裝了libmemcached庫的版本是隻有64位,也許? – Charles

+0

是的,那是我設法編譯memcached的情況 –

回答

1

您是在正確的道路上 - 你LAMPP是32位,而該系統的其餘部分(我認爲)是64位。所以,當你安裝libmemcached一個編譯的PHP-libmemcached它是64位版本。這就是爲什麼你會得到「錯誤的ELF類」錯誤。

之前,你可以編譯的32位版本的PHP-memchached你需要安裝的libmemcached和libz進行(和他們的頭)32位版本。

您需要: sudo dpkg --add-architecture i386 sudo apg-get update sudo apt-get install libmemcached-dev:i386 libz-dev:i386

我認爲應該是足以讓你編譯PHP-libmemcached的32位版本。

+0

,現在我在php日誌中獲取不同的錯誤: PHP啓動:無法加載動態庫「的/ opt/LAMPP/lib中/ PHP /分機/無調試非-zts-20100525/memcached.so」 - /opt/lampp/lib/libgcc_s.so.1:版本'GCC_4.2.0' 未找到(由/usr/lib/i386-linux-gnu/libstdc++.so.6要求)在未知的行0 –

+0

我想我應該安裝舊版本的編譯器,但如何做到這一點?例如apt-get install g ++ - 4.2.0不起作用。我知道我是新手... –

+0

這個錯誤,我不明白BTW :(你能告訴你爲什麼PHP是32位? – Raber

1

有一條土辦法來解決你的問題

/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.x.x

和複製的libgcc_s。所以進

/opt/lampp/lib,並更名爲libgcc_s.so.1覆蓋以前的文件。

+0

謝謝,這個工程!我給你賞賜,但接受了Raber的答案,因爲我希望你們都能獲得一些聲望 –