PHP 8.4 → PHP 8.5 Migration Guide (Full Checklist + Changes)
Upgrading from PHP 8.4 to PHP 8.5 is generally smooth, but there are some important new features, improvements, and compatibility considerations you should check before going live. This guide covers everything you need to prepare your application for PHP 8.5.

✅ 1. Check PHP 8.5 Minimum Requirements
Before upgrading, ensure your system meets these minimum requirements:
- 64-bit OS recommended
- Latest versions of Apache/Nginx
- OpenSSL 1.1.1+
- libxml 2.9.0+
- MariaDB/MySQL drivers updated
- Composer updated to latest version
If you are on shared hosting, confirm your hosting provider supports PHP 8.5.
✅ 2. Review Deprecated Features in PHP 8.4
PHP 8.5 removes or warns about features deprecated earlier. Ensure your code does not rely on:
❌ Deprecated in 8.4 (and flagged more in 8.5):
- Dynamic properties (unless using
#[AllowDynamicProperties]) - Using
utf8_encode()/utf8_decode()(removed) - Passing
nullto non-null parameters - Deprecated function parameters in core extensions
- Old
mbstringregex features
Run:
php -d deprecated_functions=1 yourapp.php
✅ 3. Test with the New Pipe Operator (|>)
Even though optional, PHP 8.5 introduces the pipe operator, which may conflict with libraries using custom operators.
Example transformation:
Old:
$result = strtolower(trim($input));
New with pipes:
$result = $input |> trim(...) |> strtolower(...);
Check if:
- Custom tokenizers or parsers may get affected
- Static analysis tools support the new operator
- Coding standard tools (PHP-CS-Fixer, PHP_CodeSniffer) are updated
✅ 4. Check for Changes in Array Behavior
PHP 8.5 introduces:
array_first()array_last()
These are new global functions, so you must ensure your project does not define functions with these names.
Run:
grep -R "function array_first" -n .
✅ 5. Ensure Compatibility With clone with Syntax
PHP 8.5 expands cloning capabilities:
$newUser = $user with { email: "new@mail.com" };
If you used libraries that manipulate AST or object cloning behavior, test thoroughly.
✅ 6. Update Autoloaders, Frameworks, and CMS
Frameworks that already support 8.5 include (or will soon):
- Laravel 11+
- Symfony 7+
- WordPress (Core support pending)
- Drupal 11
- Magento (Enterprise patches needed)
- CodeIgniter 4.x
- Yii 3
Make sure you update:
composer update
And check the platform.php section if used.
✅ 7. Test under PHP 8.5 RC Version
Before going live, run:
php --ini
php -v
Install PHP 8.5 RC locally or in a staging environment.
Run your test suite:
vendor/bin/phpunit
And static analysis:
vendor/bin/phpstan analyse
vendor/bin/psalm
✅ 8. Extensions & Libraries That Need Updates
Ensure the following extensions are compatible with PHP 8.5:
- Redis extension 6+
- xDebug (download PHP 8.5 compatible build)
- IonCube (support usually lags)
- Swoole
- Imagick
- GD
- Opcache (auto-supported but check config)
✅ 9. Testing & Logging Checklist
Enable strict checks:
error_reporting=E_ALL
display_errors=Off
log_errors=On
Test:
- Authentication flows
- Session handling
- Upload & file handling
- Cron scripts
- Payment gateways
- API integrations
- Caching & job queues
- Database migrations
Pay special attention to:
- Typed properties
- String/array auto-casting
- Serialization formats
✅ 10. Final Deployment Checklist
Before switching production to PHP 8.5:
✔ Update composer packages
✔ Clear caches
php artisan cache:clear
php artisan config:clear
✔ Build static assets (if using Laravel/Vite/Node)
✔ Restart PHP-FPM
sudo systemctl restart php8.5-fpm
✔ Monitor logs for 24 hours
Check:
error.loglaravel.logmysql-slow.log
🎉 Conclusion: Smooth Upgrade Ahead!
PHP 8.5 is a developer-friendly release bringing:
- Better readability
- Functional-style pipelines
- Stronger debugging tools
- More consistent error handling
- Faster performance
Upgrading from 8.4 to 8.5 requires minimal code changes, as long as deprecated features have been addressed.
View Other Updates

