linux/macos类找不到而windows能跑通,是psr-4大小写不一致所致;必须确保类名、文件名、路径、命名空间四者严格大小写匹配,且ci/cd在linux环境验证。

Linux/macOS 上类找不到,Windows 却能跑通?不是 bug,是 PSR-4 大小写不一致在作祟。必须从命名、配置、CI 三端同步约束,否则上线就报 Class not found。
类名、文件名、路径必须严格一一对应
PSR-4 不是建议,是硬规则:命名空间 AppHttpControllersHomeController 就必须落在 src/Http/Controllers/HomeController.php —— 首字母大写、大小写全匹配,缺一不可。
- 错例:
homecontroller.php、HomeController.PHP、src/http/controller/HomeController.php,Linux 下全部失败 - Windows 能跑只是“宽容”,不是正确;Git 提交时若重命名文件(如
user.php → User.php),需用git mv user.php User.php,否则 Windows 上 Git 可能忽略大小写变更 - IDE 自动创建类时,留意是否生成了小写文件名(某些 PHPStorm 模板有此问题)
composer.json autoload 配置必须用标准格式
autoload 块里写的路径和命名空间,是 Composer 生成 vendor/composer/autoload_psr4.php 的唯一依据。写错大小写,映射就断了。
本文档主要讲述的是Android 操作系统的介绍;Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
- 正确写法:
"App\": "src/",不是"app\": "src/"或"App\": "SRC/" - 执行
composer dump-autoload --optimize后,检查生成的vendor/composer/autoload_psr4.php中键名是否与你代码里use的命名空间完全一致(包括双反斜杠) - 改完类名或移动文件后,别只删
vendor/,务必重新运行composer dump-autoload,否则旧映射残留
CI/CD 必须用 Linux 环境验证
本地 Windows 开发没问题,不代表部署到 Linux 就安全。CI 流水线是唯一能提前暴露大小写问题的地方。
- GitHub Actions 或 GitLab CI 的 job 必须指定
ubuntu-latest或明确image: php:8.5-cli,禁用 Windows runner - 加一步验证脚本:
php -r "class_exists('AppHttpControllersHomeController') or die('Class missing');",比单纯composer install更早发现问题 - 禁止在 CI 中跳过
composer install后直接php artisan serve—— 缺少 autoload 映射,错误会延后到请求时才抛出,难定位
最隐蔽的坑不在代码里,而在 Git 的索引状态:一个大小写不同的文件名被 commit 进去,可能只在某次 merge 后才突然失效。每次合入前,用 git status 留意是否有文件名仅大小写差异的变更。










