You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel部署共享主机出现Class 'App\Lib\Formatter'未找到异常求助

解决Laravel共享主机上找不到App\Lib\Formatter类的问题

这个问题我之前帮好几个开发者排查过,本地正常但部署到共享主机就报错,大概率是大小写不兼容或者自动加载缓存的问题,咱们一步步来排查解决:

1. 优先检查目录和文件的大小写(最常见原因)

本地开发环境(Windows/macOS)的文件系统是不区分大小写的,所以你写app/lib/Formatter.php或者app/Lib/Formatter.php都能正常识别,但共享主机几乎都是Linux系统,严格区分大小写!

  • 确认共享主机上的目录结构:必须是app/Lib/Formatter.php(注意Lib是大写L),和你命名空间里的App\Lib完全对应。
  • 如果共享主机上的目录是小写的lib,立刻重命名为Lib,问题大概率就解决了。

2. 验证命名空间和类名的一致性

打开Formatter.php文件,确保:

  • 文件顶部的命名空间是:namespace App\Lib;
  • 类名是:class Formatter(和文件名Formatter.php完全一致,包括大小写)

3. 重新生成Composer自动加载缓存

本地开发时Composer已经生成了自动加载映射,但部署到共享主机后可能没同步更新,需要重新生成:

  • 如果有SSH权限,登录共享主机后在项目根目录运行:
    composer dump-autoload
    
  • 如果没有SSH权限,你可以在本地运行composer dump-autoload,然后把vendor/composer目录下的autoload_classmap.php、autoload_static.php这几个文件上传到共享主机对应的位置覆盖。

4. 检查文件和目录权限

共享主机的权限设置可能会导致Laravel无法读取文件:

  • 确保app/Lib目录的权限是755
  • 确保app/Lib/Formatter.php文件的权限是644

5. 清除Laravel的配置和缓存

如果之前在共享主机上运行过优化缓存命令,可能缓存了旧的类路径:

  • 有SSH权限的话,运行:
    php artisan config:clear
    php artisan cache:clear
    php artisan optimize:clear
    
  • 没有SSH权限的话,可以临时在某个控制器里添加一行代码:
    \Illuminate\Support\Facades\Artisan::call('optimize:clear');
    
    访问一次这个控制器后再删掉这行代码,就能清除缓存了。

一般来说,做完第一步和第三步就能解决问题,如果还不行再检查后面的步骤。

内容的提问来源于stack exchange,提问作者no0by5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:25:52