Aujourd’hui, nous allons tester la compatibilité avec PHP 8 de tous les sites WordPress du serveur, en ligne de commande et de manière automatisée.
Fin du support pour PHP 7.4 pour novembre 2022
Le cycle de vie de PHP 7.4 est atteint et il n’y aura plus de mises à jour ni de support à la fin du mois de novembre 2022. Cela signifie qu’il est désormais temps de passer sous PHP 8 pour bénéficier des dernières améliorations techniques de PHP et des mises à jour de sécurité.
Et mieux vaut s’y prendre un peu plus tôt, notamment si vous possédez une boutique WooCommerce pour ne pas être pris au dépourvu en pleine période de fêtes (Black Friday, Noël…).
Tester votre code avec php-parallel-lint
Nous allons créer un nouveau projet composer avec php-parallel-lint
qui se chargera de scanner notre code et de remonter toutes les incompatibilités, fonctions obsolètes ou problématiques susceptibles de donner des avertissements ou des erreurs lors du basculement vers PHP 8.
Commençons par installer php-parallel-lint
:
composer create-project php-parallel-lint/php-parallel-lint php-parallel-lint --no-dev
# ou avec un user :
# sudo su -l www-data -s /bin/bash -c "composer create-project php-parallel-lint/php-parallel-lint php-parallel-lint --no-dev"
Code language: PHP (php)
Résultat de la commande:
Creating a "php-parallel-lint/php-parallel-lint" project at "./php-parallel-lint"
Installing php-parallel-lint/php-parallel-lint (v1.3.2)
- Installing php-parallel-lint/php-parallel-lint (v1.3.2): Extracting archive
Created project in /Users/matt/Downloads/project-ACTAGIS-php8-202208/php-parallel-lint
Loading composer repositories with package information
Updating dependencies
Lock file operations: 4 installs, 0 updates, 0 removals
- Locking nette/tester (v2.4.2)
- Locking php-parallel-lint/php-console-color (v1.0.1)
- Locking php-parallel-lint/php-console-highlighter (v1.0.0)
- Locking squizlabs/php_codesniffer (3.7.1)
Writing lock file
Installing dependencies from lock file
Nothing to install, update or remove
2 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
Code language: JavaScript (javascript)
Installons maintenant l’outil qui permet de coloriser le code dans notre console:
composer require --dev php-parallel-lint/php-console-highlighter
Code language: JavaScript (javascript)
Résultat:
Info from https://repo.packagist.org: #StandWithUkraine
Using version ^1.0 for php-parallel-lint/php-console-highlighter
./composer.json has been created
Running composer update php-parallel-lint/php-console-highlighter
Loading composer repositories with package information
Updating dependencies
Lock file operations: 2 installs, 0 updates, 0 removals
- Locking php-parallel-lint/php-console-color (v1.0.1)
- Locking php-parallel-lint/php-console-highlighter (v1.0.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
- Downloading php-parallel-lint/php-console-color (v1.0.1)
- Downloading php-parallel-lint/php-console-highlighter (v1.0.0)
- Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
- Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
Generating autoload files
Code language: JavaScript (javascript)
Scanner le code avec php-parallel-lint
Voici la syntaxe pour scanner votre code:
./php-parallel-lint/parallel-lint FOLDER_TO_SCAN -p PHP_VERSION
Notez que WordPress est compatible avec PHP 8.0. Il vous reste désormais à tester vos plugins et thèmes WordPress :
# test plugins
./php-parallel-lint/parallel-lint /home/www/skyminds/public_html/wp-content/plugins -p php8.0
# test themes
./php-parallel-lint/parallel-lint /home/www/skyminds/public_html/wp-content/themes -p php8.0
Code language: PHP (php)
Résultats:
PHP 8.0.22 | 10 parallel jobs
............................................................ 60/857 (7 %)
............................................................ 120/857 (14 %)
............................................................ 180/857 (21 %)
............................................................ 240/857 (28 %)
............................................................ 300/857 (35 %)
............................................................ 360/857 (42 %)
............................................................ 420/857 (49 %)
............................................................ 480/857 (56 %)
............................................................ 540/857 (63 %)
............................................................ 600/857 (70 %)
............................................................ 660/857 (77 %)
............................................................ 720/857 (84 %)
............................................................ 780/857 (91 %)
............................................................ 840/857 (98 %)
................. 857/857 (100 %)
Checked 857 files in 2 seconds
No syntax error found
Conclusion
php-parallel-lint
est un formidable outil pour vérifier des milliers de ligne de code très rapidement mais il vous faudra ensuite vérifier sur votre site de développement que tout fonctionne comme prévu.
N’oubliez pas non plus vos snippets: l’outil ne pourra pas les tester étant donné qu’ils sont dans la base de données mais un simple coup d’oeil aux logs du serveur vous permettront d’identifier le code qui doit être revu et corrigé pour PHP 8.
Lorsque vous serez prêt, vous n’aurez plus qu’à éditer votre server block sur NginX pour pointer vers php8.0-fpm
et redémarrer NginX. Le domaine en question sera alors servi avec PHP 8.
Recherchez-vous un expert WordPress ou WooCommerce sur qui vous pouvez compter? Ne cherchez plus.