【问题标题】:Migrating website from php 5.2 to php 5.6, encountering memcache errors将网站从 php 5.2 迁移到 php 5.6,遇到 memcache 错误
【发布时间】:2019-07-12 09:01:31
【问题描述】:

编辑:
也许我可以让这更简单:当我的网站在 php-5.2 上运行时,一切正常。当我尝试在 php-5.6 上运行它时,我收到此错误:

安装的库都是一样的:

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
内存缓存版本:1.4.21

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

顺便说一句,是否启动memcached服务没有区别!

【问题讨论】:

  • 你使用的是什么版本的内存缓存?你更新你的内存缓存包到最新了吗?
  • 使用 memcache 版本 3.0.8 和使用 memcached 版本 2.2.0

标签: php codeigniter memcached


【解决方案1】:

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

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

你应该找出你的 memcache 持久 id 是在哪里定义的

【讨论】:

  • 有什么快速的方法吗?
  • 查看application/config看是否没有memcached.php文件或者你可以尝试在你的项目中搜索以$this->load->driver('cache'...开头的文本
  • 找到这个:$this->m = new Memcache();
  • 它在Memcached_library 文件中吗?
  • 我有 memcached.php 文件,但里面没有那行代码。它指向本地主机
【解决方案2】:

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

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

【讨论】:

  • 我听到你在说什么,但是,5.2 上的包安装与 5.6 上的相同。我在 5.2 上没有 memcached,它运行良好。代码只有很小的变化来调整到 5.6,我的意思是只有一行代码,这与 preg_replace 有关。所以其他一切都是一样的,但现在我得到一个 memcached 错误,安装 memcached 并没有帮助,它只会导致构成帖子后半部分的问题。
猜你喜欢
  • 2016-02-17
  • 2017-04-11
  • 1970-01-01
  • 2017-12-29
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
相关资源
最近更新 更多