Maison > Questions et réponses > le corps du texte
P粉6836651062023-08-24 11:50:35
Si vous utilisez SELinux, vous devrez peut-être accorder des autorisations httpd pour lire les données du répertoire /home :
sudo setsebool httpd_read_user_content=1
P粉7275312372023-08-24 09:24:51
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 chemin
/common/configs/config_templates.inc.php
Existe 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
/home/viapics1/public_html/common/configs/config_templates.inc.php
Où
/home/viapics1/public_htmlLa
section 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
require_once $_SERVER['DOCUMENT_ROOT'].'/common/configs/config_templates.inc.php';
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.