Yii2 - session_start(): 找不到保存处理程序 'memcached' - 会话启动失败

Yii2 - session_start(): Cannot find save handler 'memcached' - session startup failed

我收到这个错误: session_start(): Cannot find save handler 'memcached' - session startup failed

在config/web.php我的设置是这样的: 在组件下

'cache' => [
          //  'class' => 'yii\caching\FileCache',
            'class'        => 'yii\caching\MemCache',
            'useMemcached' => true,
            'servers' => [
                [
                    'host' => '127.0.0.1',
                    'port' => 11211

                ],
            ],

php信息显示内存缓存已正确安装。

我还使用了此 link 中的以下脚本来检查内存缓存是否正常工作

<?php
if (class_exists('Memcache')) {
    $server = '127.0.0.1';
    if (!empty($_REQUEST['server'])) {
        $server = $_REQUEST['server'];
    }
    $memcache = new Memcache;
    $isMemcacheAvailable = @$memcache->connect($server);

    if ($isMemcacheAvailable) {
        $aData = $memcache->get('data');
        echo '<pre>';
        if ($aData) {
            echo '<h2>Data from Cache:</h2>';
            print_r($aData);
        } else {
            $aData = array(
                'me' => 'you',
                'us' => 'them',
            );
            echo '<h2>Fresh Data:</h2>';
            print_r($aData);
            $memcache->set('data', $aData, 0, 300);
        }
        $aData = $memcache->get('data');
        if ($aData) {
            echo '<h3>Memcache seem to be working fine!</h3>';
        } else {
            echo '<h3>Memcache DOES NOT seem to be working!</h3>';
        }
        echo '</pre>';
    }
}
if (!$isMemcacheAvailable) {
    echo 'Memcache not available';
}

?>

我得到了结果

Fresh Data:
Array
(
    [me] => you
    [us] => them
)
Memcache seem to be working fine!

我在这里遗漏了什么以及如何修复这个错误。

在 config/web.php 文件的顶部

use app\cart\storage\SessionStorage;
Yii::$container->setSingleton('app\cart\ShoppingCart');

Yii::$container->set('app\cart\storage\StorageInterface', function() {
    return new SessionStorage(Yii::$app->session, 'primary-cart');
});

实际上除了memcache你还需要安装memcached。 当我尝试 apt-get install memcached 我得到 memcached is installed and already newest version

但是你需要像

一样安装php-memcache

apt-get install php-memcached 在您的 phpinfo 中,memcache memcached 应该如下图所示。