"Impossible d'ouvrir le fichier requis, PHP a rencontré une erreur fatale"
P粉345302753
2023-08-20 17:22:12
<p>J'obtiens l'erreur suivante d'Apache : </p>
<p><strong>[Samedi 19 mars 23:10:50 2011] [warn] mod_fcgid : stderr : Erreur fatale PHP : require_once() [function.require] : Ouverture de '/common/configs/config_templates.inc. php' a échoué (include_path='.:/usr/share/pear:/usr/share/php') à la ligne 158 de /home/viapics1/public_html/common/configs/config.inc.php </strong> ;/p>
<p>Je ne suis certainement pas un expert d'Apache, mais les fichiers config.inc.php et config_templates.inc.php sont tous deux là. J'ai également essayé d'accéder à la page test.html que j'ai placée dans le répertoire common/configs/, donc je ne pense pas qu'il y ait un problème d'autorisations. J'ai également défini les autorisations sur le fichier config_templates.inc.php pour donner à tout le monde des autorisations de lecture, d'écriture et d'exécution. Je ne sais pas quoi faire, j'ai vérifié s'il y avait un répertoire /usr/share/php et j'ai constaté qu'il n'y en avait pas, mais lorsque j'ai installé php en utilisant yum, il a dit que c'était déjà la dernière version. Aucune suggestion? </p>
Si vous utilisez SELinux, vous devrez peut-être autoriser httpd à lire le répertoire /home, utilisez la commande suivante :
Ce n'est en fait pas une question liée à Apache ni même une question liée à PHP. Pour comprendre cette erreur, vous devez faire la différence entre les chemins sur le serveur virtuel et les chemins dans le système de fichiers.
require
les opérateurs sont utilisés sur les fichiers. Mais un chemin comme celui-ciExiste uniquement sur le serveur HTTP virtuel, il n'existe pas de chemin de ce type dans le système de fichiers. Le chemin correct du système de fichiers devrait être
Parmi eux
La sections'appelle Document Root et connecte le monde virtuel au monde réel. Heureusement, les serveurs Web ont généralement la racine du document dans une variable de configuration partagée avec PHP. Alors si vous changez votre code comme ça
Cela fonctionnera dans n'importe quel fichier dans n'importe quel répertoire !
Mise à jour : Enfin, j'ai écrit un article expliquant la différence entre chemins relatifs et absolus sur les systèmes de fichiers et les serveurs Web, expliquant le problème en détail et incluant quelques solutions pratiques. Par exemple, lorsque vous exécutez le script à partir de la ligne de commande, une variable aussi pratique n'existe pas. Dans ce cas, il peut être résolu en utilisant une technique dite « à entrée unique ». Vous pouvez également vous référer à l'article ci-dessus pour plus de détails.