Laravel(版本6)php artisan route:list在生产环境中返回“目标类不存在”错误(在本地环境中正常工作)

时间:2020-01-24 02:01:28

标签: php vue.js production-environment laravel-6

我将laravel 6用于BE,将vuejs用于FE。在我的本地环境(基于xampp服务器构建)上,一切都很好。但是,当我将应用程序部署到服务器(带ubuntu 18.04的灯泡服务器)时,尝试运行“ php artisan route:list”时出现以下错误。

Illuminate \ Contracts \ Container \ BindingResolutionException:目标类[App \ Http \ Controllers \ Masterdata \ CountryController]不存在。

在/var/www/html/performance.goautobot.chat/public_html/performance/vendor/laravel/framework/src/Illuminate/Container/Container.php:806

        try {
             $reflector = new ReflectionClass($concrete);
       } catch (ReflectionException $e) {
         throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
       }

某些API无法正常工作。怪异的部分是“ Roles”和“ Countries”具有与以下结构完全相同的结构,但是当我尝试使用Postman时,只有与“ Roles”相关的api才出现“ BindingResolutionException”错误。

Route::group(['middleware' => 'auth:api'], function () {    
  // Countries     
  Route::get('masterdata/countries', 'Masterdata\CountryController@index');      
  // Roles    
  Route::get('masterdata/roles', 'Masterdata\RoleController@index');     
}

我试图通过运行“ composer dump-autoload”和“ php artisan config:cache”之类的命令来解决此问题,但是它没有解决问题。另外,尝试删除项目文件夹并进行新的安装和部署。

请让我知道如何解决此问题。提前非常感谢您。

1 个答案:

答案 0 :(得分:0)

我在HomeController中遇到了类似的问题,然后我检查了web.php文件中的路由, 我发现它就像下面的

Route::get('/', 'HomeController@index');

然后根据Homecontoller所在的目录,将其更改为以下内容

Route::get('/', 'App\Http\Controllers\HomeController@index'); 

之后,它可以正常工作。

因此,请检查您的控制器目录,

如果您的控制器目录是“ App \ Http \ Controllers \ Masterdata \ CountryController”,则将其添加到路由中。就像下面的

Route::get('/', 'App\Http\Controllers\Masterdata\CountryController');

我试图根据自己的情况进行解释, 请告诉我是否有帮助,如果我做错了事,请原谅我