[英]Laravel Lumen Memcached not found
好的,我剛開始使用 Lumen,我正在嘗試使用 Auth,但是調用 Auth::check 或任何其他 Auth 函數會導致以下錯誤致命錯誤:供應商中找不到類“Memcached” \\illuminate\\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',
]);
如果有人能真正幫助我,我會很高興
編輯
在深入了解框架之后,我在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() 方法的注釋。
在您的.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::$inmutable
, DotEnv::$inmutable
設置和artisan serve
服務器。
對我有用的解決方案是:
在bootstrap/app.php
添加以下內容: Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();
Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();
在.env
文件中,即使您不打算使用它們,也將所有配置設置為“基本驅動程序”(數組、文件),因為您需要
如果您有新的 lumen 安裝,則必須將.env.example
重命名為.env
。 所以它可以讀取你的配置!
如果您的 .env 文件由另一個用戶擁有而不是嘗試運行 artisan 命令的用戶,則會發生這種情況。
檢查是否安裝了memcached
,如果沒有安裝,請運行:
apt-get install php5-memcached
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.