【发布时间】:2015-08-13 15:12:29
【问题描述】:
在我的开发设置中,我的 Laravel 项目运行良好,但在将其部署到我的生产服务器后,我遇到了错误。该错误不会在第一次请求时发生,但会在之后的每个请求中发生。
我怀疑这与缓存有关,但我不知道是什么。
我的app/Http/Kernel.php 中有以下内容(注意。定义的其他中间件也失败了,这是一个说明错误的示例):
protected $routeMiddleware = [
'json-response-headers' => \App\Http\Middleware\JsonResponseHeaders::class,
];
还有一个使用它的路由(同样,有很多路由使用中间件,这是一个简单的示例,但与所有其他路由一样失败):
// system
Route::group( [
'prefix' => 'system',
'middleware' => [
'json-response-headers'
]
], function()
{
Route::get( 'status', 'SystemController@status' );
} );
当我请求/system/status 时,它第一次工作(就像我修改routes.php 文件时一样),但之后,它给出了以下错误:
Container.php 第 736 行中的反射异常:json-response-headers 类不存在
使用以下调用堆栈:
in Container.php line 736
at ReflectionClass->__construct('json-response-headers') in Container.php line 736
at Container->build('json-response-headers', array()) in Container.php line 626
at Container->make('json-response-headers', array()) in Application.php line 674
at Application->make('json-response-headers') in Pipeline.php line 123
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 54
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 53
这是我在 Laravel 5.0 中开始的一个项目,但中途升级到了 5.1。我在开发机器上的 IIS/Windows Server 2008 R2 上运行它,在生产机器上运行 IIS/Windows Server 20112 R2。
我已尝试转储作曲家自动加载并重新优化。
composer dump-autoload
php artisan clear-compiled
php artisan optimize
如果我更改 routes.php 以使用完整的中间件路径,它可以正常工作,例如:
// system
Route::group( [
'prefix' => 'system',
'middleware' => [
\App\Http\Middleware\JsonResponseHeaders::class // <-- this has changed
]
], function()
{
Route::get( 'status', 'SystemController@status' );
} );
【问题讨论】:
标签: php laravel routing laravel-5 middleware