Résoudre les problèmes

Erreur PHP avec require_once, require, include_once ou include

Vérifié le 3 min de lecture errores php php

Lorsque PHP ne peut pas ouvrir un fichier demandé par require_once, require, include_once ou include, le message complet indique le chemin demandé, qui peut être relatif, le fichier à l'origine de l'appel et sa ligne. require arrête l'exécution ; include génère généralement un avertissement et laisse l'exécution continuer.

Voici un exemple de message :

Fatal error: require(): Failed opening required '/home/usuario_cpanel/public_html/fichero.php' (include_path='.:php') in /home/usuario_cpanel/public_html/index.php on line 1

Cette erreur indique que PHP n'a pas pu ouvrir la ressource demandée par require ou include. Conservez aussi l'avertissement précédent, car il peut préciser si c'est le chemin, les permissions, open_basedir ou include_path qui a échoué.

Dans l'exemple, index.php appelle fichero.php à la ligne 1. PHP indique qu'il n'a pas pu l'ouvrir à ce chemin ; cela ne prouve pas à lui seul que le fichier n'existe pas.

Causes possibles et solutions

  1. Vérifiez le chemin exact de l'erreur, l'existence du fichier et la casse de chaque nom.
  2. Vérifiez le DocumentRoot et la structure réelle du déploiement. Un site ne se trouve pas forcément dans /home/usuario/public_html et peut charger du code situé en dehors du répertoire public.
  3. Examinez les permissions du fichier et les droits de traversée des répertoires parents, ainsi que le propriétaire.
  4. Si le fichier existe et est lisible, vérifiez les restrictions open_basedir, include_path, les wrappers et le répertoire de travail utilisé pour un chemin relatif.
  5. S'il a disparu, comparez les versions, déploiements, sauvegardes et journaux. N'envisagez une intrusion que si des modifications, des accès ou d'autres éléments l'étayent.

Chemins stables et dépendances

Lorsque le fichier appartient au même projet, un chemin basé sur __DIR__ évite de dépendre du répertoire depuis lequel le processus s'exécute :

require __DIR__ . '/config/bootstrap.php';

C'est un exemple : ce fichier doit exister dans la structure réelle de votre application. Si vendor/autoload.php manque, vérifiez le déploiement des dépendances avec Composer et son fichier de verrouillage ; ne créez pas de fichier vide et ne remplacez pas require par include pour masquer le problème. Ne construisez pas un chemin d'inclusion directement à partir des données d'une requête.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.