Maison > Questions et réponses > le corps du texte
P粉6628028822023-08-21 16:05:34
Si vous utilisez SELinux, vous devrez peut-être autoriser httpd à lire le répertoire /home, utilisez la commande suivante :
sudo setsebool httpd_read_user_content=1
P粉2519031632023-08-21 13:14:41
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-ci
/common/configs/config_templates.inc.php
Existe 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
/home/viapics1/public_html/common/configs/config_templates.inc.php
Parmi eux
/home/viapics1/public_htmlLa section
s'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
require_once $_SERVER['DOCUMENT_ROOT'].'/common/configs/config_templates.inc.php';
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.