codeigniter2 在 windows 10 上部署 wamp 服务器,memcached 错误修复

codeigniter2 deploy on windows 10 with wamp server, memcached error fix

我正在尝试 运行 使用 wamp 服务器 windows 10 上的旧 codigniter2 网站。

但我收到以下错误:

A PHP Error was encountered
Severity: Error
Message: Call to a member function get() on null
Filename: C:/wamp64/www/website.test/system/libraries/Cache/drivers/Cache_memcached.php:52

完全错误

我该怎么办?

我解决了我的问题:

步骤 1(在 WAMP 服务器中启用 Memcache):

  • 下载与您的 PHP 版本兼容的 Memcache 包 和 Wamp 版本(32 或 64 位)。我下载了 Thread Safe 一个。
  • 解压下载包然后复制php_memcache.dll到 您 PHP 的扩展文件夹,例如 C:\wamp64\bin\php\php5.6.40\ext. php5.6.40 是您的 PHP 文件夹。
  • 打开 php.ini 文件并搜索扩展名=php_bz2.dll 其中 应该是扩展列表中的第一个扩展然后复制 extension=php_memcache.dll 并粘贴到扩展名的末尾 列表。
  • 重启 Wamp 服务器
  • 现在您应该会在访问时看到加载的 Memcache http://localhost

如果以上步骤都不行,您只需打开根目录下logs文件夹下的错误日志文件,查看那里的错误即可。

步骤 2(/system/libraries/Cache/drivers/Cache_memcached.php 中的更改):

使用此 github link,我在 Cache_memcached.php 中进行了更改:

替换为:

$this->_memcached = new Memcached();

有了这个:

if (class_exists('Memcached')) {
      $this->_memcached = new Memcached();
   }
   else if (class_exists('Memcache')) {
       $this->_memcached = new Memcache();
   }
   else {
          log_message('error', 'Failed to create object for Memcached Cache; extension not loaded?');
          return FALSE;        
   }

并替换为:

if ( ! extension_loaded('memcached'))

有了这个:

if ( ! extension_loaded('memcached') && ! extension_loaded('memcache'))

然后删除(如果存在):

$this->_memcached->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$this->_memcached->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);

还有这个(如果存在的话):

$this->_memcached->setOption(Memcached::OPT_PREFIX_KEY, $prefix);

步骤 3(刷新数据库):

  • 删除并创建新数据库
  • 导入数据(如果是大数据可以通过wamp服务器导入mysql 控制台“使用 dbname;来源 c:/wamp64/www/dataname.sql”)
  • 重启 wamp 服务器