0Pricing
PHP Academy · Leçon

Types d’erreurs PHP et signalement

Comprendre les avis, avertissements et erreurs fatales, ainsi que les niveaux de error_reporting.

Types d’erreurs PHP et signalement est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Types d'erreurs PHP

PHP possède plusieurs niveaux de gravité pour les erreurs :

  • Notice — problème mineur, l'exécution continue
  • Warning — problème non fatal, l'exécution continue
  • Fatal Error — l'exécution s'arrête immédiatement
  • Parse Error — erreur de syntaxe, l'exécution s'arrête avant de commencer
  • Deprecated — la fonctionnalité sera supprimée

error_reporting()

Contrôlez les erreurs signalées par PHP avec error_reporting() :

<?php
// Show all errors (development)
error_reporting(E_ALL);

// Hide notices and deprecated
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

// Production: no display, log to file
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');

display_errors ou log_errors

Paramètres clés de php.ini pour la gestion des erreurs :

  • display_errors = On — afficher les erreurs dans le navigateur (développement uniquement)
  • display_errors = Off — les masquer aux utilisateurs (production)
  • log_errors = On — écrire dans le fichier error_log
  • error_log = /path/to/file — spécifier l'emplacement du journal

N'affichez jamais les erreurs aux utilisateurs en production !

Déclencher des erreurs avec trigger_error

Générez vos propres erreurs PHP avec trigger_error() :

<?php
function divide(int $a, int $b): float {
    if ($b === 0) {
        trigger_error('Division by zero', E_USER_WARNING);
        return 0.0;
    }
    return $a / $b;
}

echo divide(10, 0);  // triggers E_USER_WARNING

Gestionnaire d'erreurs personnalisé

Enregistrez votre propre gestionnaire d'erreurs avec set_error_handler() :

<?php
set_error_handler(function(int $errno, string $errstr, string $file, int $line): bool {
    $message = "[$errno] $errstr in $file:$line";
    error_log($message);
    if ($errno === E_USER_ERROR) {
        http_response_code(500);
        die('Internal error — please try again later');
    }
    return true;  // don't execute PHP internal error handler
});

trigger_error('Custom error message', E_USER_ERROR);

Sources courantes d'erreurs

Causes typiques des erreurs PHP :

  • Accéder à une clé de tableau non définie → notification
  • Appeler une fonction qui renvoie false, puis utiliser le résultat → avertissement
  • Appeler une fonction non définie → erreur fatale
  • Oublier un point-virgule → erreur d'analyse
  • Diviser par zéro → avertissement (renvoie INF ou NAN)

Opérateur de suppression des erreurs @

L'opérateur @ supprime les erreurs d'une seule expression — évitez-le et utilisez une gestion appropriée des erreurs :

<?php
// Bad: hides errors silently
$result = @file_get_contents('missing.txt');

// Good: check explicitly
$result = file_get_contents('missing.txt');
if ($result === false) {
    // handle the error
    echo 'File not found';
}

PHP 8 : JIT et changements liés aux erreurs

PHP 8 a rendu la gestion de certaines erreurs plus stricte :

  • De nombreux avertissements sont devenus des TypeError/ValueError
  • str_contains/starts_with/ends_with remplacent les expressions régulières pour les vérifications simples
  • Le passage de types d'arguments incorrects déclenche par défaut une TypeError

ini_set à l'exécution

Remplacez les paramètres de php.ini à l'exécution :

<?php
// Display errors during development
if (getenv('APP_ENV') === 'development') {
    ini_set('display_errors', '1');
    ini_set('display_startup_errors', '1');
    error_reporting(E_ALL);
} else {
    ini_set('display_errors', '0');
    ini_set('log_errors', '1');
    error_reporting(E_ALL);
}

Vérifier le niveau d'erreur

Détectez les niveaux d'erreur avec un ET binaire :

<?php
$level = error_reporting();

if ($level & E_NOTICE) {
    echo 'Notices are reported';
}
if ($level & E_WARNING) {
    echo 'Warnings are reported';
}

// Check specific error types
echo (E_ALL & E_NOTICE) ? 'E_ALL includes E_NOTICE' : 'no';

Bonnes pratiques pour les journaux d'erreurs

Bonnes habitudes pour les journaux d'erreurs :

  • Consignez toujours les erreurs en production
  • Incluez le contexte : identifiant utilisateur, URL de la requête, horodatage
  • Utilisez une journalisation structurée (JSON) pour faciliter l'analyse
  • Faites tourner les fichiers journaux pour éviter de remplir le disque
  • Surveillez les journaux avec des outils comme ELK, Datadog ou Papertrail

Vérification rapide

Quel type d'erreur PHP interrompt immédiatement l'exécution ?

Récapitulatif : signalement des erreurs PHP

Principes essentiels de la gestion des erreurs :

  • Types d'erreurs : notification, avertissement, fatale, analyse, obsolète
  • Définir le niveau avec error_reporting()
  • Désactiver l'affichage et activer la journalisation en production
  • Enregistrer un gestionnaire personnalisé avec set_error_handler()
  • Ne supprimez jamais les erreurs avec @ dans le code de production

Questions Fréquemment Posées

La leçon « Types d’erreurs PHP et signalement » est-elle gratuite ?

Oui — le texte complet de « Types d’erreurs PHP et signalement » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Types d’erreurs PHP et signalement » ?

Comprendre les avis, avertissements et erreurs fatales, ainsi que les niveaux de error_reporting. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Types d’erreurs PHP et signalement » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Types d’erreurs PHP et signalement
  2. Try, Catch et Finally
  3. Créer des exceptions personnalisées
  4. Journalisation des erreurs et bonnes pratiques
← Retour à PHP Academy