簡體   English   中英

未找到 Laravel Lumen Memcached

[英]Laravel Lumen Memcached not found

好的,我剛開始使用 Lumen,我正在嘗試使用 Auth,但是調用 Auth::check 或任何其他 Auth 函數會導致以下錯誤致命錯誤:供應商中找不到類“Memcached” \\illuminate\\cache\\MemcachedConnector.php 第 52 行 我不想使用以前從未使用過的 Memcached。

我在.env文件中禁用了它並將CACHE_DRIVERSESSION_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',
]);

如果有人能真正幫助我,我會很高興

編輯

在深入了解框架之后,我在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 .. .流明:(

編輯這是我的.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__.'/../');

我的數據庫配置工作得很好,所以 .env 文件加載得很好。

我今天在這個問題上花了 3 個小時。 在本主題中 demve 的帖子的幫助下,我找到了解決方案。 很簡單! 我希望它不會影響我以后的發展。

就這樣,在.env文件中:

CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array

好的,我進行了更新,因為我遇到了有關會話的新問題。 事實上,當你設置前面的參數時,你的會話不會是持久的,就像文檔中說的: 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()); 我現在可以看到我的會話的全部價值

您可能需要重新啟動服務器,尤其是在使用php artisan serve

Lumen 似乎沒有根據請求獲取.env更改。

我遇到了完全相同的問題 - 嘗試使用文件緩存,但收到有關 Memcached 的錯誤 - 重新啟動服務器會重新加載.env文件。

這個問題在我安裝這個包時解決了所以至少嘗試

首先我試過這個,它工作正常

CACHE_DRIVER = array 

但后來想到了什么是memcached

然后我嘗試了這個,它在不更改驅動程序memcached情況下工作正常

apt-get install php-memcached 

yum 包管理器或 Amazon Linux。

yum install php-memcached -y

在 .env 文件中替換

#This line:- 
  CACHE_DRIVER = memcached

#With this:- 
   CACHE_DRIVER = array

確保不要被未加載的 .env 文件所困擾,默認情況下,它在 Lumen 中被注釋掉了。 因此,如果您在 .env 中指定不同的緩存驅動程序,請執行以下操作。

注意:如果您使用 .env 文件來配置您的應用程序,請不要忘記在 bootstrap/app.php 文件中取消對 Dotenv::load() 方法的注釋。

來源: http : //lumen.laravel.com/docs/cache

在您的.env文件中,您還可以使用CACHE_DRIVER=file而不是CACHE_DRIVER=memcached

就我而言,我在 .env 文件中添加了 Add CACHE_DRIVER=array
然后

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

在我的bootstrap/app.php.env文件開始工作。

對我來說,問題是我使用了 homestead 存儲庫的 php-7 分支,它沒有准備好 PHP memcached。

我現在遇到了類似的問題,我無法追蹤它,但我猜這與默認配置存儲在vendor/laravel/lumen-framework/config文件夾中的DotEnv::$inmutableDotEnv::$inmutable設置和artisan serve服務器。

對我有用的解決方案是:

  1. bootstrap/app.php添加以下內容: Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable(); Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();

  2. .env文件中,即使您不打算使用它們,也將所有配置設置為“基本驅動程序”(數組、文件),因為您需要

如果您有新的 lumen 安裝,則必須將.env.example重命名為.env 所以它可以讀取你的配置!

如果您的 .env 文件由另一個用戶擁有而不是嘗試運行 artisan 命令的用戶,則會發生這種情況。

檢查是否安裝了memcached ,如果沒有安裝,請運行:

apt-get install php5-memcached

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM