如何让 php-memcached 扩展与 RHEL6 上的 SASL 配合使用

如何让 php-memcached 扩展与 RHEL6 上的 SASL 配合使用

我有带 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 = 1php.ini
  • 当您尝试设置密钥时,您是否检查过 Couchbase Server 的日志中是否存在错误?

虽然我熟悉 CouchDB,但我并不是 Couchbase Server 方面的专家。如果您需要调试它,我会尝试弄清楚如何将日志级别提高到类似水平DEBUG,然后看看您是否可以收集到任何有用的信息。

我认为,除非是前两种情况之一,否则此错误不是 PHP 方面的问题,而可能是 Couchbase Server 版本的问题。写入错误似乎是 libmemcached 公开的,因此这意味着它直接来自 Couchbase Server。

相关内容