把本地代码(window虚拟环境)搬到服务器(Centos)上后,一开始没什么问题。
后来发现每次一用在App/Http/Controllers/api/下面的**Controllers时,
就会报错:Target class [App\\Http\\Controllers\\api\\***Controller] does not exist
折腾了很久,发现根本原因是:windows下是不分大小写的,但是linux是分的啊!!
仔细看看***Controller内写的命名空间:
namespace App\Http\Controllers\API;
他用的是大写的API。但是实际位置是:
app/Http/Controllers/api
是小写的api……坑爹啊!!
解决方法一、把文件夹api改名为API。简单直接。
解决方法二、参考此文档,在Laravel根目录下的composer.json里,找到autoload设定:
"autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" } },
并且在中间加一行"App\\Http\\Controllers\\API\\": "app/Http/Controllers/api/":
"autoload": { "psr-4": { "App\\": "app/", "App\\Http\\Controllers\\API\\": "app/Http/Controllers/api/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" } },
就OK了。
文章评论