增强部署脚本依赖检查

This commit is contained in:
2026-04-24 23:46:53 +08:00
parent 32584f11d2
commit fc68aaff72
+35 -1
View File
@@ -8,6 +8,7 @@ BLUE='\033[0;34m'
NC='\033[0m'
PROJECT_ROOT="/www/wwwroot/chat.ay.lc" # <--- 确认这里的路径是否正确
export COMPOSER_ALLOW_SUPERUSER=1
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE} 🚀 Laravel 稳健更新脚本 (带严格检查) ${NC}"
@@ -56,6 +57,16 @@ fi
composer dump-autoload --no-dev --optimize --classmap-authoritative --no-interaction
if [ $? -ne 0 ]; then echo -e "${RED}❌ Composer autoload 重建失败${NC}"; exit 1; fi
# 用当前 PHP 直接加载 Laravel autoload,提前暴露 vendor 缺文件 / 权限 / autoload 缓存问题
php -d opcache.enable_cli=0 -r "require __DIR__.'/vendor/autoload.php'; echo 'Composer autoload OK'.PHP_EOL;"
if [ $? -ne 0 ]; then
echo -e "${RED}========================================${NC}"
echo -e "${RED} ❌ 致命错误:PHP 无法加载 vendor/autoload.php ${NC}"
echo -e "${RED} 请检查 vendor 是否完整、文件权限是否正确、Composer 是否使用了正确 PHP 版本。 ${NC}"
echo -e "${RED}========================================${NC}"
exit 1
fi
# 3. 前端构建
echo -e "${YELLOW}[3/7] 前端构建 (npm run build)...${NC}"
npm run build
@@ -76,8 +87,31 @@ php artisan optimize:clear && php artisan optimize && php artisan view:cache
echo -e "${YELLOW}[6/8] 重启 Horizon...${NC}"
php artisan horizon:terminate
# 7. 重载 PHP-FPM / opcache,避免 Web 进程继续使用旧的 autoload 缓存
echo -e "${YELLOW}[7/8] 重载 PHP-FPM...${NC}"
PHP_FPM_RELOADED=0
if command -v systemctl >/dev/null 2>&1; then
for svc in php-fpm php-fpm-84 php-fpm-83 php-fpm-82 php84-php-fpm php83-php-fpm php82-php-fpm; do
if systemctl list-unit-files "$svc.service" >/dev/null 2>&1; then
systemctl reload "$svc" >/dev/null 2>&1 || systemctl restart "$svc" >/dev/null 2>&1 || true
PHP_FPM_RELOADED=1
fi
done
fi
for init_script in /etc/init.d/php-fpm /etc/init.d/php-fpm-*; do
if [ -x "$init_script" ]; then
"$init_script" reload >/dev/null 2>&1 || "$init_script" restart >/dev/null 2>&1 || true
PHP_FPM_RELOADED=1
fi
done
if [ "$PHP_FPM_RELOADED" -eq 1 ]; then
echo -e "${GREEN}✅ PHP-FPM 已尝试重载。${NC}"
else
echo -e "${YELLOW}⚠️ 未识别到 PHP-FPM 服务,请在面板中手动重启当前站点使用的 PHP。${NC}"
fi
# 6. 权限 (针对宝塔或Nginx+FPM环境的修正)
echo -e "${YELLOW}[7/7] 修复权限...${NC}"
echo -e "${YELLOW}[8/8] 修复权限...${NC}"
# 将所有文件所属权变更为 Web 运行用户(如 www),防止 root 权限导致框架日志或缓存写入失败
chown -R www:www .
# 默认读写执行权限