卸载php时配置文件是否保留取决于命令参数:debian/ubuntu用apt remove不带--purge可保留/etc/php/,加--purge则彻底删除;centos/rhel中rpm/dnf默认保留%config标记的配置文件,升级时重命名的.rpmsave或.dpkg-old需手动恢复。

直接卸载 PHP 时默认会删除配置文件(如 /etc/php/ 下的目录),但多数包管理器支持保留配置——关键在于用对命令参数,而非依赖“自动备份”。
Debian/Ubuntu:用 apt purge 还是 apt remove?
apt remove(即 apt remove --purge 的简写)会删配置;真正保留配置的是 apt remove 不带 --purge:
-
sudo apt remove php php-cli php-fpm—— 只删二进制和运行时文件,/etc/php/完整留下 -
sudo apt remove --purge php—— 连/etc/php/8.1/都被清空,不可逆 - 如果已误执行
--purge,配置只能从/var/lib/dpkg/info/php*.list查路径,再看是否被dpkg -S记录过
CentOS/RHEL:rpm 与 dnf 的配置保留逻辑
RPM 包默认把配置文件标记为 %config,只要不加 --erase --nodeps 强删,卸载时会跳过这些文件:
-
sudo dnf remove php php-fpm——/etc/php.ini、/etc/php-fpm.d/www.conf全部保留 -
sudo rpm -e php—— 同样保留,除非手动加--nodeps --force - 注意:若用
dnf autoremove清理依赖,它不会动已标记为%config的文件,但可能删掉你手动改过的.rpmsave备份(见下条)
配置文件被自动重命名成 .rpmsave 或 .dpkg-old 怎么办?
当新版 PHP 包升级时覆盖旧配置,包管理器会把原文件重命名为 .rpmsave(RHEL)或 .dpkg-old(Debian),这不是卸载行为,但容易混淆:
立即学习“PHP免费学习笔记(深入)”;
- 查残留:
find /etc/php -name "*.rpmsave" -o -name "*.dpkg-old" - 恢复方法:
sudo mv /etc/php/8.1/apache2/php.ini.dpkg-old /etc/php/8.1/apache2/php.ini - 这些文件不会被卸载命令删除,但如果你手动
rm -rf /etc/php就真没了
最易忽略的一点:PHP 模块配置(如 /etc/php/8.1/mods-available/opcache.ini)和 Web 服务器集成配置(如 /etc/apache2/mods-enabled/php8.1.load)不属于 PHP 主包,卸载 PHP 不会影响它们——重装前得自己清理或重建软链接。









