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 服务器
我正在尝试 运行 使用 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 服务器