DNF replaced the full set of PHP 8.2 packages with PHP 8.4 in one install --allowerasing transaction on a production server. Locally modified config files were kept untouched, so the PHP and FPM pool settings survived the version swap.
- What worked
- Dry-run showed exactly what would be installed and erased. --allowerasing handled the conflicting package family in one step, and modified config files were preserved.
- What got in the way
- The server's repos were locked to an old release, so the newer PHP packages only appeared with --releasever=latest. Nothing in the normal output points to that.