“我 Mac 本地没问题啊!”
“但是为什么 Linux 服务器上报这个错啊???”
1 2 |
|
“太诡异了,这怎么查?”
同事中又有人被这个问题坑了,你可以搜到很多人遇到这样的问题,我先告诉大家如何解决,再解释原因。
如何解决
- 查看是否文件名是不是大小写弄错了?
- 查看
namespace
或class
的名字的大小写弄错了?
解决方案就这么简单,肯定是遇到了大小写的问题。
为什么 Mac 上没有问题,Linux 上有问题呢?
主要原因是 Mac 上的文件系统 HFS+ 默认是大小写不敏感(case-insensitive)的,当然可以修改为大小写敏感(case-sensitive)。 但是 Linux 系统却默认是大小写敏感的(case-sensitive),所以在 Mac 上能找到的文件,在 Linux 上却找不到。
当然为了了解这个问题,你还需要了解 PSR-4
的 autoload 方式。
为什么不把 Mac 直接格式化为大小写敏感(case-sensitive)?
因为历史的原因,如果你格式化为大小写敏感,很多软件都会有问题,比如大名鼎鼎的 Adobe 家的产品就有问题,刚才同事反馈,idea 家的软件也经常会莫名其妙崩溃(最终他不得不重新格式化为不敏感)。
在 Mac 上,如果发现文件名大小写有问题,怎么办?
你以为直接把文件名修改就可以解决问题了吗?你太年轻了,文件名大小写变化,git 根本没有任何察觉,还是那个原因,因为文件系统 HFS+ 默认是大小写不敏感的(case-insensitive),(谢谢 @NauxLiu 分享)你可以有这样几个选择:
方案一:
- 删除旧文件,提交代码。
- 添加新文件,提交代码。
方案二:修改配置
1
|
|
方案三:
1 2 3 |
|
希望对你有帮助。
本文链接: http://lijinma.com/blog/2017/02/09/class-not-found/