木一 发表于 2015-11-18 10:09:19

memcached服装已安装php扩展也装了,报错:Notice: Memcache::connect(): Server 127.0.0.1 (tcp 112

  为什么连接不了啊

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命令获取数据

# 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



# 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.iyunv.com/1318618/1243823

php_memcached支持binary protocol 协议,而php_memcache协议不支持,php_memcached支持对同一key的多进程的并发处理问题,

memcached还有个非常称赞的地方,就是flag不是在操作的时候设置了,而是有了一个统一的setOption()。Memcached实现了更多的memcached协议。






  

版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: memcached服装已安装php扩展也装了,报错:Notice: Memcache::connect(): Server 127.0.0.1 (tcp 112