您的位置:首页 > 理论基础 > 计算机网络

memcached服装已安装php扩展也装了,报错:Notice: Memcache::connect(): Server 127.0.0.1 (tcp 11211, udp 0) failed wi

2015-08-20 18:02 991 查看
为什么连接不了啊

memcached服务启动了,php-memcache扩展安装了,权限好像也正常

Notice: Memcache::connect(): Server 127.0.0.1 (tcp 11211, udp 0) failed with: Permission denied (13) in /var/www/html/a.php on line 3


首先看memcached服务已经可以用了,我这里可以用get命令获取数据
[root@localhost home]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get five
VALUE five 0 5
12345
END


然后是phpinfo();也看到了php-memcache扩展



我的memcache.php测试代码:
$mem = new Memcache;
//$mem->connect("10.40.24.66", 11211);
$mem->connect("127.0.0.1", 11211);
//保存数据
$mem->set('key3', 'Mike', 0, 60);
$val = $mem->get('key1');
if(isset($val))echo "Get key1 value: " . $val ."";
echo '--';
exit;


以上都正常,但还是报错,搜索网上很久都没有答案。最后在kohana群里得到了大神Dreamsxin解答:

原因:原来是SELinux限制了httpd对外访问的权限。将其开启即可:
setsebool -P httpd_can_network_connect 1


或者
setsebool -P httpd_can_network_connect=1


聊天记录:
Dreamsxin

sestatus -v

shaiya 2015-8-20 17:29:04

[root@localhost html]# sestatus -v

SELinux status:                 enabled

SELinuxfs mount:                /selinux

Current mode:                   enforcing

Dreamsxi 2015-8-20 17:44:16

setsebool -P httpd_can_network_connect 1

Dreamsxi 2015-8-20 17:44:21

试下这个

Dreamsxi 2015-8-20 17:44:27

应该可以让PHP连接

其他:

memcached是服务端,提供数据的set和get

libmemcaced是memcached的客户端库,还有个libmemcace现在用的较少

php-memcahed是php的memcached扩展(下载后编译到php中http://pecl.php.net/get/memcached-2.0.0.tgz),因为php_memcached是依赖libmemcached库,所以首先安装libmemcached库

很多东西不能安装,要更新yum源(yum makecache yum -y update),编译安装时还要yum -install -y gcc gcc++等。
http://fighter.blog.51cto.com/1318618/1243823
php_memcached支持binary protocol 协议,而php_memcache协议不支持,php_memcached支持对同一key的多进程的并发处理问题,

memcached还有个非常称赞的地方,就是flag不是在操作的时候设置了,而是有了一个统一的setOption()。Memcached实现了更多的memcached协议。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: