簡體   English   中英

PHP Memcached請求空鍵會引發500服務器錯誤

[英]PHP Memcached Requesting Empty Key throws 500 Server error

我的網站托管在webfaction上,並且正在運行php5.4

我正在嘗試啟動並運行memcache,但遇到了一個非常奇怪的錯誤

非常感謝您的幫助,托管公司正在與我一起努力解決此問題,但是...請參閱下文

以下代碼有效

error_reporting(E_ALL & ~E_NOTICE);

$mc = new Memcached();
$mc->addServer('localhost', 32323);
echo "Setting foo to Hello! <Br />";
$mc->set("foo", "Hello!");
echo "Setting bar to Memcached.. <Br />";
$mc->set("bar", "Memcached...");

echo "dumping values <br />";
$arr = array(
$mc->get("foo"),
$mc->get("bar")
);
var_dump($arr);

但是以下不

error_reporting(E_ALL & ~E_NOTICE);

$mc = new Memcached();
$mc->addServer('localhost', 32323);

$mc->get("cat");

它實際上引發了這個錯誤

500 – Internal Server Error
The page you requested is currently unavailable. Please try again later.

If you are the website owner, please see Error: 500 Internal Server Error documentation for more information and possible steps to resolve the problem.

這是我要記住的一些事情

  • 是的,它是memcacheD而不是memcache

  • 我創建了隔離的環境來對此進行測試,但是在所有情況下,如果我在設置值之前都要求該值,我什至無法嘗試/捕獲任何錯誤(不會傳播那么高)。 幾乎沒有達到PHP級別

從我的PHP錯誤日志中,我得到

[Sat Feb 02 19:55:33 2013] [error] [client 209.29.54.55] Premature end of script headers: php54.cgi

所以這是我從虛擬主機得到的答案,以防其他人遇到相同的問題

好的,我們終於確定了問題所在:

php53 -c。 index.php之前
php53:符號查找錯誤:〜/ php53-exts / memcached.so:未定義符號:memcached_last_error_errno

具體來說,發生的事情是您針對libmemcached 1.0.15構建了memcached,但是我們的服務器已經安裝了libmemcached的舊版本0.31。

較新的libmemcached版本是必需的。 memcached 2.1.0不會針對較早的libmemcached構建。 但是,當您的PHP實際運行時 ,它會嘗試鏈接到共享的libmemcached,而不是您安裝到〜/ lib的libmemcached。

好的,可以針對libmemcached靜態地重建PHP memcached PECL模塊,但是隨后還需要針對相同的libmemcached自身構建memcached。 然后,您必須確保在PHP代碼中執行“ new Memcached()”時,PHP會調用適當的〜/ bin / memcached。

這工作太多了,所以我正在研究在所有服務器上升級memcached和libmemcached的版本。 較新的memcached + libmemcached將允許安裝新版本的memcached PHP PECL模塊,而無需本地安裝libmemcached和二進制靜態鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM