我的网站托管在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
答案 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。