php5+memcache+codeigniter的安裝與設定

Posted by on | |



又出現難找的資料,只好自己把它給記下來,免得又忘了。

話說ci(codeigniter) version 2.0以上,內建了memcache的driver,
但是在英文大小有分的系統上,及64bits的系統上,都會有各自的問題發生。
(也許ci升到最新版就沒有這問題了)

主機資訊:
system os:2.6.38-8-server Ubuntu
ci version:2.0.2
php version:5.3.5

問題1:
“Unable to load the requested driver: CI_Cache_memcached”



表示您的ci是舊版的,可以升級ci,或修改程式:(這問題會發生在系統路徑大小寫有差別的情況下)
{ci}/system/libraries/Driver.php
在約第48行:
$lib_name = strtolower(preg_replace('/^CI_/', '', $this->lib_name));
改成:
$lib_name = ucfirst(strtolower(preg_replace('/^CI_/', '', $this->lib_name)));

問題2:
若照問題1修改後,會出現更嚴重的問題:
“HTTP 錯誤 500 (Internal Server Error):伺服器嘗試處理要求時遇到意外狀況”

第一,要先確認是否裝了php的memcache的extension。
安裝php的memcache的extension-方法1:(用pecl安裝)
1.sudo apt-get install php-pear
2.sudo apt-get install build-essential
3.sudo pecl install memcache
“Enable memcache session handler support? [yes] :”
4.sudo echo "extension=memcache.so" > sudo /etc/php5/conf.d/memcache.ini
5.sudo service apache2 restart
6.用phpinfo來查看是否抓到memcache


第二,請查看/var/log/apache2/error.log
是否出現
PHP Fatal error:  Call to a member function ……. ….. .. .. system/libraries/Cache/drivers/Cache_memcached.php on line 50
這表示ci抓到memcache的driver,但driver有錯誤,driver檔案是:Cache_memcached.php
修改{ci}/system/libraries/Cache/drivers/Cache_memcached.php

第156行:
$this->_memcached = new Memcached();
改成
$this->_memcached = new Memcache();

第192行:
if ( ! extension_loaded('memcached'))
改成
if ( ! extension_loaded('Memcache'))


理論上,應該是裝好了。
曾經出現過 php worning:
表示裝的php memcache extension有問題,要重新安裝最新版的囉


0 意見: