diff --git a/deploy_update.sh b/deploy_update.sh index 6b9f2de..5ad6b03 100644 --- a/deploy_update.sh +++ b/deploy_update.sh @@ -42,6 +42,20 @@ if [ ! -f "vendor/autoload.php" ]; then fi echo -e "${GREEN}✅ 依赖安装成功且文件存在。${NC}" +# 关键 Composer polyfill 文件检查:若 vendor 目录不完整,Laravel 接口会返回 PHP Warning HTML,前端会误判为 JSON 解析失败 +if [ ! -f "vendor/symfony/polyfill-mbstring/bootstrap.php" ]; then + echo -e "${RED}========================================${NC}" + echo -e "${RED} ❌ 致命错误:Composer vendor 不完整! ${NC}" + echo -e "${RED} 缺少 vendor/symfony/polyfill-mbstring/bootstrap.php。 ${NC}" + echo -e "${RED} 请删除线上 vendor 后重新执行 composer install。 ${NC}" + echo -e "${RED}========================================${NC}" + exit 1 +fi + +# 重新生成生产环境 autoload,避免 autoload_files.php 指向已缺失的旧文件 +composer dump-autoload --no-dev --optimize --classmap-authoritative --no-interaction +if [ $? -ne 0 ]; then echo -e "${RED}❌ Composer autoload 重建失败${NC}"; exit 1; fi + # 3. 前端构建 echo -e "${YELLOW}[3/7] 前端构建 (npm run build)...${NC}" npm run build @@ -73,4 +87,4 @@ chmod -R 775 storage bootstrap/cache echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} 🎉 更新成功!网站已恢复。 ${NC}" -echo -e "${GREEN}========================================${NC}" \ No newline at end of file +echo -e "${GREEN}========================================${NC}"