设置: Apache的; PHP 5.2.9; libevent(对于memcached,它是必需的)版本1.3; memcached服务器版本1.2.2(试过1.4.5,1.4.0,现在降级到1.2.2,没有区别); memcached php pecl module 2.2.6版。
问题:
与未解决的问题类似cannot store values into memcache和Super strange PHP error
这些线程都没有解决问题,并且没有一个问题的作者遵循给出的建议。我跟着他们一切,但它仍然不起作用。
如果我通过PHP连接, Memcache
代码不显示任何错误,但是当我尝试执行任何命令(例如getVersion
)时,我得到响应:< / p>
Notice: memcache_get_version() [function.memcache-get-version]: Server 127.0.0.1 (tcp 11211) failed with: Failed reading line from stream (0) in /var/www/html/memcache.php on line 11
已尝试解决方案:
通过命令行连接到memcache不起作用。在我键入任何命令后,连接正在关闭。
[/usr/local/src]$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats
Connection closed by foreign host.
我尝试$ memcached -S
以确保在禁用SASL支持的情况下编译memcached。
响应:“此服务器不支持SASL。”
另外,其中一条评论是
您可能正在运行没有ASCII协议支持的memcached,例如运行:
$ memcached -B binary
如果是这种情况,请完全删除
-B
参数,PHP和telnet应该可以正常工作。
memcache起始行是:
memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211
其中没有B参数。
有什么想法吗?
答案 0 :(得分:6)
对谁来说可能很有趣。
问题已解决。
这就是问题所在(也许它可以帮助2个相关踏板的作者)。
在共享主机上,有时您不应使用127.0.0.1。而是使用网站的IP地址。
如此改变
memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211
到
memcached -d -m 1024 -u root -l 123.456.789.123 -p 11211
和来自
的PHP代码$memcache->pconnect("127.0.0.1",11211);
到
$memcache->pconnect("123.456.789.123",11211);
解决了这个问题。
谢谢大家!
答案 1 :(得分:0)
我会和你的系统sadmin谈谈。我认为可能涉及防火墙。