Le dossier est déjà configuré
Le template actuel pointe error_views vers src/views/errors. PHPAML cherche d’abord le fichier du statut, par exemple 404.php, puis default.php si aucun fichier précis n’existe.
src/views/errors/404.php
src/views/errors/500.php
src/views/errors/default.phpUne page 404 utile
src/views/errors/404.php
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404 — Page introuvable</title>
<link rel="stylesheet" href="/css/error.css">
</head>
<body>
<main>
<p>404</p>
<h1>Cette page est introuvable.</h1>
<p>Vérifiez l’adresse ou retournez à votre bibliothèque.</p>
<a href="/books">Voir mes livres</a>
</main>
</body>
</html>Une page générique sans fuite
src/views/errors/default.php
<!DOCTYPE html>
<html lang="fr">
<head><meta charset="UTF-8"><title><?= (int) $status ?> — Error</title></head>
<body>
<main>
<p><?= (int) $status ?></p>
<h1><?= htmlspecialchars($title, ENT_QUOTES, 'UTF-8') ?></h1>
<p>La demande n’a pas pu être terminée.</p>
<?php if ($requestId !== null): ?>
<p>Référence: <code><?= htmlspecialchars($requestId, ENT_QUOTES, 'UTF-8') ?></code></p>
<?php endif; ?>
</main>
</body>
</html>Le numéro de référence permet de retrouver l’incident dans les journaux sans montrer la trace, les chemins internes ou les secrets au visiteur.
Quel fichier pour quel problème ?
Avec APP_DEBUG activé, PHPAML peut afficher son panneau détaillé pour corriger le code. En production, le visiteur doit recevoir la page sûre et générique.