如何在CentOS7上设置Laravel的路由路径?

时间:2018-12-20 06:39:02

标签: laravel

我创建了laravel项目,该项目在我的本地Windows pc上运行良好。一旦我(通过SSH)上传到Centos7服务器,我的所有路由都无法使用。我试图通过操作来解决,例如清除缓存,删除供应商文件夹并重做安装作曲家,但没有任何帮助。我从日志中抓取如下。

  

[2018-12-20 13:09:17]本地。错误:LogicException:无法准备路由[api / user]进行序列化。使用闭包。在/ var / www / html / srp / vendor / laravel / framework / sr $中   堆栈跟踪:

     

#0 /var/www/html/srp/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php(61):Illuminate\Routing\Route->prepareForSerialization()

     

#1 [内部功能]:Illuminate \ Foundation \ Console \ RouteCacheCommand-> fire()

     

#2 /var/www/html/srp/vendor/laravel/framework/src/Illuminate/Container/Container.php(508):call_user_func_array(Array,Array)

     

#3 /var/www/html/srp/vendor/laravel/framework/src/Illuminate/Console/Command.php(169):Illuminate\Container\Container->call(Array)

     

#4 /var/www/html/srp/vendor/symfony/console/Command/Command.php(261):Illuminate \ Console \ Command-> execute(Object(Symfony \ Component \ Console \ Input \ ArgvInput) ,对象(Sym $

     

#5 /var/www/html/srp/vendor/laravel/framework/src/Illuminate/Console/Command.php(155):Symfony \ Component \ Console \ Command \ Command-> run(Object(Symfony \组件\控制台\ $

     

#6 /var/www/html/srp/vendor/symfony/console/Application.php(817):Illuminate \ Console \ Command-> run(Object(Symfony \ Component \ Console \ Input \ ArgvInput),Object (Symfony \ Com $

     

#7 /var/www/html/srp/vendor/symfony/console/Application.php(185):Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Foundation\Console\RouteCacheCo$      

#8 /var/www/html/srp/vendor/symfony/console/Application.php(116):Symfony \ Component \ Console \ Application-> doRun(Object(Symfony \ Component \ Console \ Input \ ArgvInput) ,对象$

     

#9 /var/www/html/srp/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(121):Symfony \ Component \ Console \ Application-> run(Object(Symfony \组件\ Co $

     

#10 / var / www / html / srp / artisan(35):Illuminate \ Foundation \ Console \ Kernel-> handle(对象(Symfony \ Component \ Console \ Input \ ArgvInput),Object(Symfony \ Component \ Console) \ Out $    #11 {main}

非常感谢所有建议。

2 个答案:

答案 0 :(得分:0)

问题是使用闭包而不是控制器的路由,它看起来像这样:

//                       Thats the Closure
//                             v 
Route::get('/some/route', function() {
    return 'Hello World';
});

由于闭包无法序列化,因此当您有使用闭包的路由时,就无法route:cache进行路由。这就是为什么您看到该错误的原因。清除缓存或路由无效,因为这是编译时错误。

如果您的路线均未包含闭包,但仍然出现此错误,请检查

  

routes / api.php

Laravel将默认的auth api路由添加到上述文件。

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

,可以将其注释掉或替换为调用控制器方法的内容

要替换为控制器,请执行以下操作:

 Route::middleware('auth:api')->get('/user', 'UserController@index');

如果不需要,将其注释掉。

答案 1 :(得分:0)

下面的链接可以为您提供更好的主意,

laravel Unable to prepare route ... for serialization. Uses Closure

错误是由于调用了route:cache命令造成的,并且您的路由可能在此处存在一些封闭,因此请避免使用route:cache这可能是真正的原因。