WordPress : tester la compatibilité avec PHP 8

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 filesCode language: JavaScript (javascript)

Installons maintenant l’outil qui permet de coloriser le code dans notre console:

composer require --dev php-parallel-lint/php-console-highlighterCode 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 filesCode 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.0Code 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.

Votre site mérite performance et fiabilité. Grâce à mon expérience, je vous aide à optimiser WordPress/WooCommerce pour des résultats visibles.

Voyons comment améliorer votre site »

Matt

Développeur certifié WordPress & WooCommerce chez Codeable, administrateur système et enseignant-chercheur, je mets mon expertise au service de vos projets web.

Ma priorité : des sites performants, fiables et sécurisés, pensés pour offrir la meilleure expérience utilisateur. J’accompagne chaque client avec écoute et pédagogie, pour transformer vos idées en solutions concrètes et durables.

Profitez de solutions WordPress et WooCommerce sur-mesure, pensées pour optimiser durablement votre site.
Explorez les leviers pour booster l’impact de votre site web.

Opinions