增强部署脚本依赖检查
This commit is contained in:
+35
-1
@@ -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 .
|
||||
# 默认读写执行权限
|
||||
|
||||
Reference in New Issue
Block a user