我用标准的Ubuntu1604env在我的本地Vagrant (运行在Windows上)上开发了一个Slim-3应用程序。
在我的composer.json中,插入了autoload指令:
"autoload": {
"psr-4": {
"btc\\": "src\btc"
}
}在我的src\btc文件夹中,我创建了几个类,每个类文件的顶部都有namespace btc声明。
特别是,我有一个类似于这样的http.php文件:
namespace btc;
class Http {
const SUCCESS_WITH_OUTPUT = 200;
const SUCCESS_WITH_NO_OUTPUT = 204;
const SUCCESS_POST_WITH_OUTPUT = 201; //CREATED
const FAIL_AUTH = 401;
const BAD_REQUEST = 400;
const FAIL_OTHERWISE = 403;
}在我的routes.php中,我有这样的参考:
$output = ['res' => 'Method not implemented', 'status'=>btc\Http::BAD_REQUEST];这在我的本地流浪机器上很好用。
===========
现在,我克隆了回购,以部署到我的生产机器。
composer update运行良好。composer dumpautoload来创建autoload文件。class 'btc/Http' not found错误。我认为这是由于btc名称空间没有自动加载。
我错过了什么吗?
谢谢你的帮助。
发布于 2018-08-11 23:15:07
我已经找到了导致这种奇怪行为的错误:区分大小写。
由于我的运行在Windows上,所以它不关心情况。所以http.php和Http.php是一样的。
但是在纯Linux env中,这两者是不同的。
改为Http.php,一切都很好。
发布于 2018-08-13 12:15:55
请对composer中的所有路径使用/。
示例:
"autoload": {
"psr-4": {
"btc\\": "src/btc/"
}
}然后运行composer update。
https://stackoverflow.com/questions/51798250
复制相似问题