PHP : dépannage
Premiers réflexes
Section intitulée « Premiers réflexes »php --versionphp -m | sort | head -40php --inisudo systemctl status php8.3-fpmsudo journalctl -u php8.3-fpm -n 50 --no-pagersudo tail -n 50 /var/log/nginx/error.log # ou le journal du serveur web utilisésudo tail -n 50 /var/log/php_erreurs.logRemplacer 8.3 par 8.5 sur Ubuntu 26.04 (systemctl list-units 'php*-fpm*' donne le nom exact).
Erreurs fréquentes
Section intitulée « Erreurs fréquentes »| Symptôme | Cause et solution |
|---|---|
| Page blanche (erreur 500) | Erreur fatale masquée : lire le journal PHP et celui du serveur web |
502 Bad Gateway |
PHP-FPM arrêté ou socket incorrect : voir PHP-FPM et serveur web |
Le fichier .php est téléchargé ou affiché en clair |
PHP non branché au serveur web |
Call to undefined function … |
Extension manquante : apt search php-<nom> puis installation |
Class "…" not found |
Autoload : composer dump-autoload |
Allowed memory size … exhausted |
memory_limit ou fuite mémoire |
Maximum execution time exceeded |
Script trop long : max_execution_time ou passage en CLI |
Permission denied à l’écriture |
Dossier non modifiable par www-data (voir plus bas) |
Headers already sent |
Sortie avant header() ou session_start() : espace ou ligne vide avant <?php |
Cannot modify header information |
Même cause |
| Modification du code sans effet | OPcache avec validate_timestamps = 0 : recharger PHP-FPM |
Droits de fichiers
Section intitulée « Droits de fichiers »ps -o user= -C php-fpm8.3 | sort -u # utilisateur des processus PHPnamei -l /var/www/monapp/var/cache # droits de chaque dossier du cheminsudo -u www-data test -w /var/www/monapp/var && echo "écriture possible"Le chemin complet doit être traversable (x sur chaque dossier parent).
Erreurs de version
Section intitulée « Erreurs de version »php -r 'echo PHP_VERSION, "\n";'composer check-platform-reqsphp -l fichier.php # vérifie la syntaxeUn code écrit pour 8.3 peut afficher des avertissements de dépréciation en 8.5 : les repérer avec error_reporting = E_ALL et un journal d’erreurs, puis corriger avant de migrer.
Déboguer
Section intitulée « Déboguer »Sans outil : var_dump($valeur), error_log(print_r($valeur, true)).
Avec Xdebug (développement uniquement) :
sudo apt install php-xdebugphp -v # mentionne Xdebug si activé/etc/php/8.3/mods-available/xdebug.ini :
zend_extension=xdebug.soxdebug.mode=debugxdebug.start_with_request=triggerDésactiver Xdebug en production : il ralentit sensiblement PHP (sudo phpdismod xdebug).
Lenteurs
Section intitulée « Lenteurs »php -r 'var_dump(opcache_get_status(false)["opcache_enabled"] ?? false);'sudo tail -n 20 /var/log/php8.3-fpm.log # « server reached pm.max_children »ps -ylC php-fpm8.3 --sort:rss | headPistes : OPcache actif, pm.max_children adapté, requêtes SQL lentes (voir MariaDB : index et performances), dépendances inutiles (composer install --no-dev --optimize-autoloader).
Activer le journal des requêtes lentes de PHP-FPM, dans le pool :
slowlog = /var/log/php8.3-fpm-lent.logrequest_slowlog_timeout = 5sMettre à jour en sécurité
Section intitulée « Mettre à jour en sécurité »- Sauvegarder le code et la base.
- Lire le guide de migration de la version visée.
- Tester sur une copie avec
error_reporting = E_ALL. - Mettre à jour, puis recharger PHP-FPM et surveiller les journaux.
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Les diagnostics sont les mêmes sur les deux versions ; adapter les noms de service et de journal à la version (php8.3-fpm, php8.5-fpm).
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Liste des erreurs PHP
- Retour : Installation