Laravel站点本地运行正常 线上服务器无法加载故障求助
排查方向
- 检查文件权限:确认
vendor目录、bootstrap/cache目录的权限归属和读取权限,确保线上web服务运行用户(如www-data、nginx)对上述目录有可读权限,避免root执行composer后生成的文件web用户无权限访问。 - 核对环境一致性:对比本地与线上的PHP版本、已安装扩展是否一致,部分composer依赖对PHP版本或扩展(如bcmath、mbstring、fileinfo等)有要求,缺失对应扩展会导致自动加载失败。
- 检查composer执行参数:线上执行composer install时是否加了
--no-dev参数,若你用到的类属于require-dev依赖,该参数会跳过对应依赖安装;线上安装依赖建议同时加--optimize-autoloader参数优化自动加载映射。 - 排查大小写问题:本地Windows、macOS系统默认大小写不敏感,类名与文件名大小写不一致也可正常运行,线上Linux系统大小写敏感,需确认报错类的类名与对应文件名大小写完全匹配。
- 校验自动加载路径:确认
public/index.php中加载autoload的路径为相对路径(如默认的require __DIR__.'/../vendor/autoload.php'),避免线上部署目录结构与本地不同导致路径失效。 - 确认vendor目录完整性:若采用本地上传vendor的部署方式,需确认文件完整上传,优先推荐直接在服务器端执行composer相关命令生成vendor目录,避免传输丢文件。
- 检查PHP配置限制:查看线上PHP的
open_basedir配置,确保项目根目录、vendor目录在允许访问的路径列表内,路径限制会导致PHP无法读取autoload文件。 - 手动验证映射关系:可临时在报错位置前打印自动加载映射,确认报错类是否存在于composer生成的类映射列表中,定位是映射未生成还是路径对应错误。
内容的提问来源于stack exchange,提问作者112233
相关产品推荐
相关产品推荐

