L'erreur fatale PHP ne peut pas ouvrir le fichier requis
P粉470645222
2023-08-23 19:46:43
<p>Je reçois l'erreur suivante d'Apache</p>
<p><strong>[Samedi 19 mars 23:10:50 2011] [AVERTISSEMENT] mod_fcgid : stderr : Erreur fatale PHP : require_once() [function.require] : Impossible d'ouvrir le '/common' /configs/ requis config_templates.inc. php' (include_path='.:/usr/share/pear:/usr/share/php') à /home/viapics1/public_html/common/configs/config.inc.php ligne 158</strong>< ;
<p>Je ne suis certainement pas un expert Apache, mais les fichiers config.inc.php et config_templates.inc.php sont là. J'ai également essayé d'accéder à la page test.html placée dans common/configs/, donc je ne pense pas qu'il y ait de problèmes d'autorisation. J'ai également défini les autorisations sur 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 à ce stade, 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 quand j'ai installé php, il m'a dit qu'il avait la dernière version. J'ai une idée? </p>
Si vous utilisez SELinux, vous devrez peut-être accorder des autorisations httpd pour lire les données du répertoire /home :
Ce n'est pas réellement un problème lié à Apache. Pas même lié à 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.
L'opérateurrequire
travaille sur des fichiers. Mais ce cheminExiste uniquement sur le serveur HTTP virtuel, le chemin n'existe pas dans le système de fichiers. Le chemin correct du système de fichiers est
Où
Lasection s'appelle Document Root et connecte le monde virtuel au monde réel. Heureusement, les serveurs Web placent généralement la racine du document dans une variable de configuration partagée avec PHP. Donc si vous changez votre code pour quelque chose comme ça
Cela fonctionne sur 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 dans les fichiers sur les systèmes et les serveurs Web, expliquant le problème en détail et incluant quelques solutions pratiques. Par exemple, une variable aussi pratique n'existe pas lorsque vous exécutez le script à partir de la ligne de commande. Dans ce cas, une technique appelée « point d’entrée unique » peut résoudre le problème. Vous pouvez également vous référer à l'article ci-dessus pour plus de détails.