PHP Memcached请求空键引发500服务器错误

时间:2013-02-03 02:04:16

标签: php memcached cgi

我的网站托管在webfaction上,并且正在运行php5.4

我正在努力让memcached启动并运行,但我遇到了一个非常奇怪的错误

任何帮助都非常感谢,托管公司正在努力与我努力解决这个问题,但是......请看下面

以下代码可以使用

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

1 个答案:

答案 0 :(得分:0)

所以这是我从网站主办得到的答案,以防其他人遇到同样的问题

好的,我们最终确切地确定了问题所在:

  

php53 -c。 index.php之前
php53:符号查找错误:   〜/ php53-exts / memcached.so:未定义的符号:   memcached_last_error_errno

     

具体来说,发生的事情是你构建了memcached   libmemcached 1.0.15,但是我们的服务器已经有了旧版本   已安装libmemcached,版本0.31。

     

更新版本的libmemcached是必要的; memcached 2.1.0会   不是针对较旧的libmemcached构建的。但实际上当你的PHP   运行,它试图链接共享的libmemcached而不是你安装的〜/ lib

     

好的,可以重建PHP memcached PECL模块   静态地反对libmemcached,但它还需要构建   memcached也反对同一个libmemcached。然后,你有   确保你的PHP调用适当的〜/ bin / memcached   在PHP代码中执行“new Memcached()”。

     

这有点太多了,所以我正在考虑使用这些版本   在我们所有的服务器上升级了memcached和libmemcached。更新   memcached + libmemcached将允许新版本的memcached   无需本地安装即可安装PHP PECL模块   libmemcached和static-linking for binary。