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
довольно хорошо.
Ответы
Ответ 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
. Поэтому он может читать ваши конфигурации!