RedisLab与WordPress集成错误:PHP警告:Redis :: select()期望参数1为整数

时间:2017-04-30 20:10:29

标签: php wordpress caching redis phpredis

我正在尝试使用我的WWrdPress站点添加Redis对象现金服务器。我在redislabs.com上关注此article和我已经创建的帐户

根据教程,我的object-cache.php文件有

 define("WP_REDIS_BACKEND_HOST", "HOST_URL");
 define("WP_REDIS_BACKEND_PORT", "12345");
 define("WP_REDIS_BACKEND_DB", "DATABAES_NAME");
 define("WP_REDIS_PASSWORD", "PA$$WORD");

347         $this->redis->auth( $redis['password'] );
348
349         if ( isset( $redis['database'] ) ) {
350           $this->redis->select( $redis['database'] );
351         }

但是我在第350行得到了这个错误

错误

  

[Sun Apr 30 19:54:30.579728 2017] [:错误] [pid 1750] [客户   162.158.26.98:21176] PHP警告:Redis :: select()期望参数1为整数,在第350行的/var/www/public/wordpress/wp-content/object-cache.php中给出字符串,referer:   mysite.com/about-us /

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

Redis Cloud和其他负责任的Redis-as-a-Service提供商仅支持默认数据库名称(或0)。只需从文件中删除349-351行,或define("WP_REDIS_BACKEND_DB", 0); 你会没事的。

答案 1 :(得分:0)

问题是strongly typed comparison of variables,这意味着phpredis正在查找或数据库名称和端口的类型为integer,但将它们放在"" makes them strings中。当您将变量与=====进行比较时,类型和值都将匹配,例如1 !== '1'

如Itamar所述,Redis数据库的“名称”实际上是数字,它们没有其他数据库那样的字符串名称。

尝试:

 define("WP_REDIS_BACKEND_HOST", "HOST_URL");
 define("WP_REDIS_BACKEND_PORT", 12345); // this is different
 define("WP_REDIS_BACKEND_DB", 0); // this is different
 define("WP_REDIS_PASSWORD", "PA$$WORD");