我有带 php 的 RHEL6.1。我从 src.rpm 安装了 libmemcached-1.0.2,并编译了 php-memcached 2.0.0b2。如果我尝试 setSaslAuthData('user','pass') 并向 memcached(Couchbase 服务器)写入某些内容,我总是会得到返回代码 5(写入失败)。注释掉 setSaslAuthData 后,默认存储桶就可以正常工作。但我需要让它与 SASL 一起工作。有人知道我的设置出了什么问题吗?
PS 当然二进制协议已开启
答案1
你确定 memcached 是用 sasl 编译的吗?
$ memcached -S
如果 memcached 未使用 SASL 进行编译,您应该会看到以下输出:“此服务器未使用 SASL 支持构建。”
答案2
设置存储桶时,您可以提供密码。然后使用 SASL 连接到 Couchbase Server,使用存储桶名称作为用户名和您之前提供的密码。
扩展,2011-12-11
我一直在读来源memcached 扩展。总体而言,似乎在 PHP 方面犯错的可能性并不大。
其他问题:
- 你能确保 PHP 中没有暴露其他错误吗
error_log
?例如“无法初始化 SASL 库。”或类似的错误? - 您设置了
memcached.use_sasl = 1
吗php.ini
? - 当您尝试设置密钥时,您是否检查过 Couchbase Server 的日志中是否存在错误?
虽然我熟悉 CouchDB,但我并不是 Couchbase Server 方面的专家。如果您需要调试它,我会尝试弄清楚如何将日志级别提高到类似水平DEBUG
,然后看看您是否可以收集到任何有用的信息。
我认为,除非是前两种情况之一,否则此错误不是 PHP 方面的问题,而可能是 Couchbase Server 版本的问题。写入错误似乎是 libmemcached 公开的,因此这意味着它直接来自 Couchbase Server。