CentOS PHP配置备份方法
一 快速定位配置文件
- 使用命令查看实际加载的配置路径:php --ini,关注输出中的 Loaded Configuration File 与 Configuration File (php.ini) Path。
- 常见位置包括:/etc/php.ini、/etc/php.d/(扩展与附加配置)。
- 若使用多版本或 SCL、Remi 仓库,可能位于版本化目录,例如:/opt/remi/php81/root/etc/php.ini、/opt/remi/php81/root/etc/php-fpm.d/;也可通过 php -i | grep “Loaded Configuration File” 精确定位。
二 手动备份步骤
- 备份主配置:
- 示例:sudo cp /etc/php.ini /etc/php.ini.bak-$(date +%F-%H%M%S)
- 备份扩展配置目录:
- 示例:sudo cp -r /etc/php.d /etc/php.d.bak-$(date +%F-%H%M%S)
- 如使用 PHP-FPM,一并备份进程池与全局配置:
- 示例:sudo cp /etc/php-fpm.conf /etc/php-fpm.conf.bak-$(date +%F-%H%M%S)
- 示例:sudo cp -r /etc/php-fpm.d /etc/php-fpm.d.bak-$(date +%F-%H%M%S)
- 打包归档便于传输与留存:
- 示例:sudo tar -czvf php_conf_$(date +%F-%H%M%S).tar.gz /etc/php.ini /etc/php.d /etc/php-fpm* 2>/dev/null**
- 将归档移至安全位置(如独立磁盘、备份服务器或对象存储挂载点)。
三 自动化备份脚本
- 示例脚本(可放入 /usr/local/bin/backup_php_conf.sh):
#!/usr/bin/env bash
set -Eeuo pipefail
BACKUP_DIR="/opt/backups/php-conf"
DATE=$(date +"%Y%m%d-%H%M%S")
HOST=$(hostname -s)
OUT="$BACKUP_DIR/php-conf-${HOST}-${DATE}.tar.gz"
INI_PATHS=(/etc/php.ini /etc/php.d /etc/php-fpm.conf /etc/php-fpm.d)
mkdir -p "$BACKUP_DIR"
INCLUDE_ARGS=()
for p in "${INI_PATHS[@]}"; do
if [[ -e "$p" ]]; then
INCLUDE_ARGS+=( "$p" )
fi
done
tar -czf "$OUT" "${INCLUDE_ARGS[@]}" 2>/dev/null
RETENTION_DAYS=7
find "$BACKUP_DIR" -name "php-conf-*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "Saved: $OUT"
- 赋权并测试:
- chmod +x /usr/local/bin/backup_php_conf.sh
- /usr/local/bin/backup_php_conf.sh
- 加入定时任务(每天 02:00 执行):
- sudo crontab -e
- 添加:0 2 * * * /usr/local/bin/backup_php_conf.sh >> /var/log/backup_php_conf.log 2>&1
四 恢复与验证
- 解压覆盖恢复:
- 示例:sudo tar -xzvf php_conf_2025-08-06-1200.tar.gz -C /
- 按原路径复制回滚(适用于 .bak 文件):
- 示例:sudo cp /etc/php.ini.bak-2025-08-06 /etc/php.ini
- 示例:sudo cp -r /etc/php.d.bak-2025-08-06 /etc/php.d
- 使配置生效:
- Apache:sudo systemctl restart httpd
- PHP-FPM:sudo systemctl restart php-fpm
- Nginx+PHP-FPM:先重启 php-fpm,再重启 nginx
- 验证:
- 查看版本与配置:php -v、php --ini
- 创建测试页 /var/www/html/info.php:,访问确认关键参数与扩展。
五 注意事项与排错
- 多版本并存时,务必备份并恢复对应版本的目录(如 /opt/remi/php81/ 与 /opt/remi/php82/),避免错配。
- 使用打包归档时,注意排除敏感信息(如包含数据库密码的自定义包含文件),或在恢复后及时修正。
- 若使用 SELinux,确保备份与恢复过程保留正确的安全上下文,必要时使用 restorecon 修复。
- 建议将备份文件同步到异地或对象存储,并定期做恢复演练以验证可用性与完整性。