2012-07-16 54 views
0

我正在嘗試將Memcached集成到我的Zend Framework網站中以加速Ajax調用,但是我遇到了麻煩。我試着用這個函數初始化它在我的引導:Memcached open_basedir生效限制

public function _initMemcached(){ 
    $memcache = new Memcached; 
    $memcache->connect('127.0.0.1', 11211); 
    Zend_Registry::set('memcached', $memcache); 
} 

但這只是拋出一個錯誤,PHP找不到類。據主辦我的網站的數據中心,Memcached的應安裝在/root/memcached-1.4.13/,所以我嘗試添加一個require_once,現在它拋出這個錯誤:

Warning: require_once() [function.require-once]: open_basedir restriction in effect.  File(/root/memcached-1.4.13/Memcached.php) is not within the allowed path(s): 

我已經盡力了的open_basedir重置我的引導,但它似乎沒有工作。我怎樣才能擺脫這個錯誤,以便我可以實例化一個memcached對象並繼續我的業務?

編輯:

數據中心告訴我,memcached.so裏面/usr/local/lib/php/extensions/no-debug-non-zts-###/但我無法通過SSH訪問以進行確認。我有extension_dir在php.ini設置爲/usr/local/lib/php/extensions/no-debug-non-zts-###/,我有extension=memcached.so但我仍然沒有找到類。我有我的設置不正確嗎?

+0

如果你創建一個包含'腳本<?PHP的phpinfo()?>'你看到一個叫做'memcached'與版本和libmemcached版部分?如果沒有顯示出來,那麼他們還沒有將memcached擴展加載到PHP中。 memcached不是一個可以包含的php腳本,它是一個擴展,必須通過'php.ini'中的'extension'指令加載到PHP中 – drew010 2012-07-16 20:11:54

+0

我已經檢查過,並且它不顯示,重複他們所做的事情。 '/ root/memcached-1.4.13'文件夾存在,它被填充文件,但沒有php文件。我不確定他們是否安裝了它或什麼。 – jaimerump 2012-07-16 20:14:46

+0

這可能是他們下載並編譯它的地方,但輸出文件應該是'memcached.so',它會進入'/ usr/lib/php/extensions/no-debug-non-zts - ###### ## /'然後必須在擴展指令中添加到'php.ini'中。如果你有shell訪問權限,你可以只讀訪問'phpinfo()'中列出的'php.ini'文件。如果是這樣,嘗試打開文件,看看他們是否添加了擴展指令。 – drew010 2012-07-16 20:41:59

回答

1

memcached是一個php擴展名,而不是一個php腳本。這意味着,它必須在php.ini內啓用類似

extension=/root/memcached-1.4.13/memcached.so 

或類似的東西。找出擴展名是如何命名的。

http://php.net/memcached.setup

相關問題