web-dev-qa-db-ja.com

Laravel Lumen Memcachedが見つかりません

ルーメンで始めたばかりで、Authを使用しようとしていますが、Auth :: checkまたはその他のAuthの関数のいずれかを呼び出すと、以下のエラーが発生します致命的なエラー:クラス 'Memcached' 52行目のvendor\illuminate\cache\MemcachedConnector.phpにはありません。 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',
]);

誰かが本当に私を助けてくれたらとてもうれしいです

[〜#〜] edit [〜#〜]

フレームワークを少し深くした後、メソッドSessionManager内のgetSessionConfigクラスにセッションドライバー名をハードコーディングしました。

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

それは動作しますが、物事を行うのに良い方法ではありません。構成ファイルはありません。すべての構成は。envファイルに記述されていると思いますが、.envその後、composer dump-autoload ...ルーメン:(

[〜#〜] edit [〜#〜]これは私の。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ファイルはまったく問題なくロードされます。

45
Paul Okeke

特にphp artisan serveを使用している場合は、サーバーの再起動が必要になる場合があります。

Lumenは、リクエストごとに.envの変更を受け取らないようです。

私はまったく同じ問題を抱えていました-ファイルキャッシュを使用しようとしましたが、Memcachedに関するエラーを受け取りました-サーバーを再起動すると.envファイルがリロードされます。

19
Alex Osborn

今日、この問題に3時間費やしました。このトピックの demveの投稿 の助けを借りて、解決策を見つけました。とてもシンプル!後の開発で私に影響を与えないことを願っています。

それだけに、_.env_ファイルで:

_CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array
_

セッションについての新しい問題に直面したため、[〜#〜] update [〜#〜]を作成します。実際、前のパラメーターを設定すると、 documentation で述べたように、セッションは永続的ではなくなります:_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());を使用すると、セッションのすべての値を見ることができます

44
Zl3n

.envファイルで置換

#This line:- 
  CACHE_DRIVER = memcached

#With this:- 
   CACHE_DRIVER = array
10
Manoj Thapliyal

.envファイルが読み込まれていないことに気付かないようにしてください。デフォルトではLumenでコメントアウトされています。したがって、.envで別のキャッシュドライバーを指定する場合は、次の手順を実行します。

注:.envファイルを使用してアプリケーションを構成している場合、bootstrap/app.phpファイルのDotenv :: load()メソッドのコメントを外すことを忘れないでください。

ソース: http://Lumen.laravel.com/docs/cache

7
davidnknight

あなたの.envファイル、CACHE_DRIVER=file の代わりに CACHE_DRIVER=memcached

このパッケージをインストールしたときにこの問題は解決したので、少なくとも試してください

最初にこれを試しましたが、うまくいきます

CACHE_DRIVER = array 

しかし、その後memcachedとは何かを考えました

それから私はこれを試してみましたが、それはドライバmemcachedを変更せずに正常に動作します

apt-get install php-memcached 
3
Ajay Kumar

私の場合、追加CACHE_DRIVER=array in .envファイル
そして

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

私のbootstrap/app.php そしてその .envファイルが機能し始めました。

2
Sajjad Ashraf

私にとって、問題はPHP memcached ready。がないHomesteadリポジトリのphp-7ブランチを使用したことでした。

2
Josh LaMar

私は同様の問題を抱えていましたが、それを追跡することはできませんでしたが、デフォルト設定が_vendor/laravel/Lumen-framework/config_フォルダ、_DotEnv::$inmutable_設定に保存されているという事実と関係があると推測します_artisan serve_ server。

私のために働いた解決策は次のとおりでした:

  1. _bootstrap/app.php_以下を追加します:Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();

  2. _.env_ファイルでは、使用しない場合でも、すべての構成を「基本ドライバー」(配列、ファイル)に設定します。

1
demve