linux下类找不到主因是大小写不一致,需严格核对psr-4映射路径、磁盘实际目录名、文件名及namespace声明四者是否完全一致,尤其在部署前须用linux容器验证。

Linux 下类找不到,八成是大小写不一致;Windows/macOS 能跑不代表没问题,部署到生产环境必炸。
检查 psr-4 映射路径与磁盘实际路径是否完全一致
Composer 的 autoload_psr4.php 里记录的是绝对路径映射,一旦磁盘上目录名是 src/Utils/,但配置写成 "App\": "src/utils/",Linux 就会直接报 Class 'AppUtilsHelper' not found。
- 运行
composer dump-autoload -v,看输出中是否扫描了你预期的路径(比如Scanning directory src/Utils) - 打开
vendor/composer/autoload_psr4.php,搜索你的命名空间前缀(如"App\"),确认其值指向的路径(如$baseDir . '/src/Utils')和ls -la src/输出的目录名大小写完全一致 - IDE 重命名类时,务必同步改文件名:把
Helper.php改成helper.php后,git add helper.php前先git rm --cached Helper.php
验证 git 是否忽略大小写变更
本地改了文件名大小写,git status 却没反应——这是 git 默认行为,不是 Composer 的锅。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行
git config core.ignorecase,若输出true,说明当前仓库认为大小写无关 - 临时修复:
git config core.ignorecase false,然后git rm --cached src/Utils/Config.php && git add src/Utils/Config.php(注意路径大小写) - 团队统一:在项目根目录加
.gitattributes,写入* text=auto eol=lf,并配合 pre-commit 检查文件名是否符合 PascalCase
用容器验证,别信本地“能跑”
Windows 或 macOS 上一切正常,只说明文件系统不敏感;真正决定成败的是 Linux 容器里的表现。
- 别用
php -r "var_dump(class_exists('AppUtilsConfig'));"在宿主机跑,要进容器:docker run --rm -v $(pwd):/app -w /app php:8.2-cli php -r "var_dump(class_exists('AppUtilsConfig'));" - 如果返回
bool(false),立刻检查src/Utils/Config.php内部的namespace声明、文件名、以及composer.json中"App\": "src/Utils/"的路径三者是否全部匹配 -
composer install后不要跳过composer dump-autoload -o,它会在生成静态映射时暴露路径推导错误(比如提示 “Class AppUtilsConfig is not in the path”)
第三方包 autoload 路径大小写不规范怎么办
有些包的 composer.json 里写了 "Foo\Bar\": "src/foo/bar",但实际结构是 src/Foo/Bar/——这在 Windows 上能蒙混过关,Linux 直接失效。
- 运行
composer show vendor/package | grep autoload,看它声明的 PSR-4 路径和你磁盘上的目录结构是否一致 - 别手动改
vendor/下的文件,那是自找麻烦;优先提 PR 给原作者修正composer.json中的路径 - 临时 workaround:在主项目的
composer.json中加"autoload-dev": {"psr-4": {"Foo\Bar\": "vendor/vendor/package/src/Foo/Bar/"}},再跑composer dump-autoload
最常被忽略的一点:autoload_psr4.php 是真相,不是缓存;每次怀疑自动加载失败,第一件事就是打开它,用 Ctrl+F 搜你的命名空间前缀和类名——所有问题,都在那里写着。










