繁体   English   中英

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

[英]Laravel (ver 6) php artisan route:list return "Target class does not exist" error with production environment (worked fine in local environment)

我在 BE 中使用 laravel 6,在 FE 中使用 vuejs。 使用我的本地环境(建立在 xampp 服务器上),一切都很好。 但是,当我将应用程序部署到服务器(带有 ubuntu 18.04 的 Lamp 服务器)时,当我尝试运行“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 不起作用。 奇怪的部分是“角色”和“国家/地区”都具有与以下完全相同的结构,但是当我尝试使用 Postman 时,只有与“角色”相关的 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”之类的命令来解决它,但它没有解决问题。 另外,尝试删除项目文件夹并进行新的安装和部署。

请让我知道如何解决这个问题。 非常感谢你。

我和 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');

我试图根据我的情况进行解释,如果这有帮助,请告诉我,如果我做错了什么,请原谅我

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM