Laravel+VueJS从AWS cPanel迁Hostinger cPanel报500错误求助
Laravel项目跨cPanel主机迁移报500错误解决方案
问题背景
- 迁移对象为已上线的Laravel + VueJS站点,技术栈无改动,原托管环境为AWS cPanel,迁移目标为Hostinger cPanel共享主机
- 已完成全量项目文件、数据库的跨主机迁移,站点根目录为
public_html,Laravel项目核心代码存放于public_html/AppGestorContenido路径下 - 迁移后直接访问站点返回HTTP 500错误,服务端日志核心错误为Laravel核心类文件找不到、自动加载失败
核心报错信息
服务端日志关键内容
PHP Warning: include(/home/tucachivache/public_html/AppGestorContenido/vendor/composer/../laravel/framework/src/Illuminate/Events/Dispatcher.php): failed to open stream: No such file or directory in /home/tucachivache/public_html/AppGestorContenido/vendor/composer/ClassLoader.php on line 444 PHP Fatal error: Uncaught Error: Class 'Illuminate\Events\Dispatcher' not found in /home/tucachivache/public_html/AppGestorContenido/vendor/laravel/framework/src/Illuminate/Events/EventServiceProvider.php:18
分步排查修复步骤
- 校验vendor目录完整性
跨主机文件迁移时,大体积的vendor目录常因打包跳过、上传中断、权限配置错误出现文件缺失。直接核对目标路径下AppGestorContenido/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php文件是否存在。
如果文件缺失,在本地开发环境执行composer install --no-dev --optimize-autoloader生成完整的vendor目录,压缩后重新上传到服务器对应路径即可。Hostinger共享主机多数无SSH执行权限,无需在服务器端执行Composer命令。 - 修正入口文件路径配置
当前项目的Laravel核心目录嵌套在public_html下的子文件夹中,需要调整根目录public_html/index.php的自动加载与应用引入路径,避免路径错位导致类加载失败,正确的配置代码段如下:// 替换原默认的上层目录引入路径 require __DIR__.'/AppGestorContenido/vendor/autoload.php'; $app = require_once __DIR__.'/AppGestorContenido/bootstrap/app.php'; - 匹配PHP运行环境
原报错日志显示项目运行依赖PHP 7.2版本,需要在Hostinger cPanel的PHP版本管理面板中,为当前站点绑定与原环境完全一致的PHP版本,同时开启Laravel运行必需的扩展:openssl、pdo_mysql、mbstring、tokenizer、xml、ctype、json,版本不匹配或扩展缺失会直接导致核心类无法正常加载。 - 修正目录读写权限
检查AppGestorContenido目录下的storage、bootstrap/cache两个路径,将权限设置为755或775,确保Web服务进程拥有写入权限,避免后续出现缓存、日志写入失败的同类500错误,禁止为目录设置全局777权限。 - 核对环境变量配置
打开AppGestorContenido/.env文件,将数据库连接的账号、密码、库名替换为Hostinger侧新建数据库的对应参数,同时修改APP_URL配置为当前站点的正式访问域名。
内容的提问来源于stack exchange,提问作者Godie F Ruiz
相关产品推荐
相关产品推荐

