我使用标准Ubuntu 1604 env在本地Vagrant(在Windows上运行)上开发了Slim-3应用程序。
在我的composer.json
中,插入了autoload
指令:
"autoload": {
"psr-4": {
"btc\\": "src\btc"
}
}
在我的src\btc
文件夹中,我在每个PHP类文件的顶部创建了几个带有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
次来创建自动加载文件。 class 'btc/Http' not found
错误。 我认为这是由于btc
名称空间未自动加载引起的。
我在这里错过了什么吗?
感谢您的帮助。
答案 0 :(得分:0)
我已找到导致此奇怪行为的错误:区分大小写。
由于我的Linux Vagrant计算机在Windows上运行,因此它不关心大小写。因此http.php
和Http.php
是相同的。
但是在纯Linux环境中,这两个是不同的。
更改为Http.php
,一切正常。
答案 1 :(得分:0)
对于作曲家中的所有路径,请使用/
。
示例:
"autoload": {
"psr-4": {
"btc\\": "src/btc/"
}
}
然后运行composer update
。