将网站从php 5.2迁移到php 5.6,遇到内存缓存错误

时间:2019-07-10 00:16:00

标签: php codeigniter memcached

编辑:
也许我可以简化一下:当我的网站在php-5.2上运行时,一切正常。当我尝试在php-5.6上运行它时,出现此错误:
```sh

已安装的库都相同:

RUN \
  apt-get install -y \
    php5-memcache \
    memcached \
    libapache2-mod-php5

有什么想法吗?


注意*我已经尝试安装php5-memcached,接下来会发生这种情况。


安装php5-memcache后,

我收到此警告消息:

Message: Memcached::__construct() expects parameter 1 to be string, array given

然后分页符出现致命错误:

Fatal error: Call to a member function get() on null in  auth_model.php on line 800 E_ERROR Error in file  auth_model.php

这可能是中断代码(第800行上的auth_model.php):

    $memcached_profile=$this->memcached->get($memcached_key);

但是似乎它的内存缓存不起作用

这些是版本:
当前PHP版本:5.6.40-0 + deb8u4
当前的CodeIgniter版本:2.0.2
Memcache版本:1.4.21

>php -i | grep memcache  
libmemcached version => 1.0.18

顺便说一句,是否启动了内存缓存服务没有什么区别!

2 个答案:

答案 0 :(得分:0)

MemCached构造函数的可选参数必须是字符串,而不是数组

/* For Creating a persistent instance */
$m2 = new Memcached('story_pool');

您应该找出定义内存缓存永久ID的位置

答案 1 :(得分:0)

您已经安装了memcache扩展名,但是您的应用程序正在尝试使用memcached扩展名定义的Memcached类。

memcache和memcached扩展类似,但不完全相同,并且不能互换。在这两个内存中,memcache(已安装的内存)是未维护的,并且与当前版本的PHP不兼容,因此您应该安装memcached扩展(您的应用程序期望该扩展)。