Подтвердить что ты не робот

Laravel Lumen Memcached не найден

Хорошо, я только начал с Lumen, и я пытаюсь использовать Auth, но вызов либо Auth:: check, либо любая другая функция Auth.. приводит к приведенной ниже ошибке Неустранимая ошибка: Class 'Memcached' не найден в поставщике \lightinate\cache\MemcachedConnector.php в строке 52. Я не хочу использовать Memcached, никогда не использовал его раньше.

Я отключил его в файле .env и задал массив CACHE_DRIVER и SESSION_DRIVER, но все равно показывает ту же ошибку.

Я решил не использовать Auth снова и вручную обрабатывать свое авторетирование с помощью сессий/токенов, но при этом результаты MiddleWare StartSession будут иметь ту же ошибку.

$app->middleware([
 // 'Illuminate\Cookie\Middleware\EncryptCookies',
 // 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
  'Illuminate\Session\Middleware\StartSession',
 // 'Illuminate\View\Middleware\ShareErrorsFromSession',
 // 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken',
]);

Пожалуйста, я был бы так рад, если бы кто-нибудь мог мне помочь здесь.

ИЗМЕНИТЬ

Пройдя немного глубоко в рамки I Hard Coded имя драйвера сеанса в классе SessionManager в рамках метода getSessionConfig

public function getSessionConfig()
{
    $this->setDefaultDriver("cookie");//I added this line
    return $this->app['config']['session'];
}

Это работает, но не очень хорошо. Нет конфигурационного файла, я считаю, что все конфигурации написаны в файле .env, но я действительно не знаю, почему session_driver и cache_driver по умолчанию помещены в memecached даже после изменения его в . env, а затем пробег composer dump-autoload... Lumen: (

ИЗМЕНИТЬ Это мой .env файл

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey!!!

APP_LOCALE=en
APP_FALLBACK_LOCALE=en

DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=array
SESSION_DRIVER=cookie
QUEUE_DRIVER=database

У меня уже есть эта строка без комментариев в моем bootsrap/app.php

 Dotenv::load(__DIR__.'/../');

Моя конфигурация DataBase работает отлично, поэтому загружается файл .env довольно хорошо.

4b9b3361

Ответ 1

Возможно, вам потребуется перезагрузить сервер, особенно если вы используете php artisan serve.

Lumen не отображает .env изменения для каждого запроса.

У меня была точно такая же проблема - попытка использования кеша файлов, но полученные ошибки в отношении Memcached - перезагрузка сервера перезагружает файл .env.

Ответ 2

Я потратил 3 часа на эту проблему сегодня. С помощью сообщения о проблеме в этом разделе я нашел решение. Очень просто! Надеюсь, это не повлияет на меня позже в моем развитии.

Просто для этого в файле .env:

CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array

Хорошо, я делаю UPDATE, потому что столкнулся с новой проблемой в сеансе. Фактически, когда вы устанавливаете предыдущие параметры, ваш сеанс не будет сохраняться, как указано в документации: array - sessions will be stored in a simple PHP array and will not be persisted across requests.

Итак, я изменил его, всегда в файле .env:

SESSION_DRIVER=cookie

С помощью var_dump(Session::all()); теперь я могу видеть все значения моей сессии

Ответ 3

В файле .env замените

#This line:- 
  CACHE_DRIVER = memcached

#With this:- 
   CACHE_DRIVER = array

Ответ 4

Убедитесь, что ваш файл .env не загружается, и по умолчанию он прокомментирован в Lumen. Поэтому, если вы указываете другой драйвер кэша в вашем .env, сделайте следующее.

Примечание. Если вы используете файл .env для настройки своего приложения, не забудьте раскомментировать метод Dotenv:: load() в файле bootstrap/app.php.

Источник: http://lumen.laravel.com/docs/cache

Ответ 5

в вашем файле .env, вы также можете использовать CACHE_DRIVER=file вместо CACHE_DRIVER=memcached

Ответ 6

В моем случае я добавил Добавить CACHE_DRIVER=array в .env файл
Тогда

Dotenv::load(__DIR__.'/../');

в моем bootstrap/app.php и файле .env начал работать.

Ответ 7

У меня была аналогичная проблема сейчас, я не мог ее отследить, но я предполагаю, что она имеет какое-то отношение к тому, что конфигурации по умолчанию хранятся в папке vendor/laravel/lumen-framework/config, настройке DotEnv::$inmutable и artisan serve сервер.

Решение, которое сработало для меня, было:

  • Добавьте в bootstrap/app.php следующее: Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();

  • в файле .env установите всю конфигурацию в "основные драйверы" (массив, файл), даже если вы не собираетесь их использовать, потому что вы w

Ответ 8

Для меня проблема заключалась в том, что я использовал ветвь php-7 репозитория homestead, у которой нет готового PHP memcached.

Ответ 9

Эта проблема устранена, когда я установил этот пакет, поэтому попробуйте как минимум

Сначала я пробовал это, и он отлично работает

CACHE_DRIVER = array 

но затем подумал о том, что такое memcached

Тогда я пробовал это, и он отлично работает без изменения драйвера memcached

apt-get install php-memcached 

Ответ 10

Это происходит, если ваш .ENV файл принадлежит другому пользователю, чем тот, кто пытается запустить команду artisan.

Ответ 11

Проверьте, установлен ли memcached, если он не установлен, запустив:

apt-get install php5-memcached

Ответ 12

Если у вас есть новая установка просвета, вы должны переименовать .env.example в .env. Поэтому он может читать ваши конфигурации!