$m = new Memcached();
$m->addServer('localhost', 11211);
IPTables
为了实现此功能,是否需要打开端口 11211 ,或者考虑到它是被绕过的localhost
?
sudo iptables -L -n -v
输出
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1155K 95M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
8817K 1451M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
183 10452 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6685
574K 30M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
122 7232 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
2649 154K DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 8343K packets, 12G bytes)
pkts bytes target prot opt in out source destination
6 2524 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:20
答案1
其他人所注意到的关于默认安装的情况是相当正确的,尽管大多数系统(例如 CentOS)在出厂时就已经运行了基本的防火墙。 但即使是基本的防火墙通常也会允许从 localhost 到 localhost 的所有连接,因为禁止这些连接是极其不明智的;最奇怪的事情可能会开始发生。如果在 INPUT 链(或 INPUT 将其大部分工作委托给的任何链)顶部附近有一行,内容是
iptables -A INPUT -i lo -j ACCEPT
或者iptables -L -n -v
格式,
840 97979 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
(不要介意前两个字段,它们是数据包和字节数,你的当然会有所不同)那么你可能没问题。另一个好的测试是
telnet localhost 11211
如果你得到
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
那么你就知道你的监听器正在运行,防火墙没有阻止它。如果做不到这一点,请按照其他人的建议,向我们提供你的信息iptables -L -n -v
和netstat -an
输出,以便我们查看。
答案2
这取决于您的安装/发行版。几乎所有东西的基本安装都应该是开放的。正如 dfranke 指出的那样,您可以使用“iptables -L”列出 iptables 条目。我可以告诉您,在 Ubuntu、Debian 和 CentOS 的基本安装中,我不需要做任何事情,只需安装 memcached 即可运行并打开它。