在 Lumen (Laravel) 中启用中间件
Posted
技术标签:
【中文标题】在 Lumen (Laravel) 中启用中间件【英文标题】:Enabling Middleware in Lumen (Laravel) 【发布时间】:2015-07-08 17:51:40 【问题描述】:我已经尝试了几个小时 Lumen(一个基于 Laravel 5 的微型 php 框架),但我无法将中间件添加到我的项目中,这基本上意味着我无法使用会话或 CSRF 保护等功能。
我的 .env 看起来像这样:
APP_ENV=local
APP_DEBUG=true
APP_KEY=some32charslongkey
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=somedbname
DB_USERNAME=someusername
DB_PASSWORD=somepw
QUEUE_DRIVER=database
CACHE_DRIVER=memcached
SESSION_DRIVER=memcached
和我的 bootstrap/app.php 像这样:
require_once __DIR__.'/../vendor/autoload.php';
Dotenv::load(__DIR__.'/../');
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
$app->withFacades();
$app->withEloquent();
$app->singleton(
'Illuminate\Contracts\Debug\ExceptionHandler',
'App\Exceptions\Handler'
);
$app->singleton(
'Illuminate\Contracts\Console\Kernel',
'App\Console\Kernel'
);
$app->middleware([
// 'Illuminate\Cookie\Middleware\EncryptCookies',
// 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
// 'Illuminate\Session\Middleware\StartSession',
// 'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken',
]);
require __DIR__.'/../app/Http/routes.php';
return $app;
只要我取消注释 $app->middleware([ ... ]); 中的行该应用程序不会在任何路线上显示任何内容。 我是 .env 配置的新手,也许我只是忘了添加一些东西,但我似乎无法解决这个问题。
【问题讨论】:
the app doesn't show anything on any of the routes
是什么意思?你有错误吗?还要检查storage/logs
中的错误日志
它只是显示一个空白页面,并且 lumen.log 中没有错误:/
那么请同时查看服务器日志
如果你不使用 memcached,你应该将 .env 配置更改为文件(或其他)
这应该回答你的问题:***.com/q/3148076/1903366
【参考方案1】:
当您启用会话中间件时,Lumen 现在正尝试使用 memcached 作为您当前在 .env 文件中设置的内容,如果您将其更改为类似文件的操作,那么它应该可以工作。
【讨论】:
谢谢,memcached对使用文件有什么好处?性能?以上是关于在 Lumen (Laravel) 中启用中间件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 和 Lumen 的控制器构造函数中的中间件之后调用方法、函数或初始化类?