Document_root n'est pas complet, le dossier de domaine manquant
-
28-10-2019 - |
Question
J'ai recherché de nombreux fils jusqu'à présent, mais je ne semble pas trouver une solution. À l'intérieur de l'un de mes scripts PHP, j'essaie d'obtenir une racine de document de serveur mais la valeur que je reçois n'est pas complète, il manque simplement le dossier de domaine. Je crois que cela est dû au partage d'hébergement ou de SMTH d'autre.
Voici la manière actuelle que j'utilise:
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
Et le chemin que j'obtiens est comme:
/home/content/01/0151247/html
Bien que je sache que cela devrait être comme:
/home/content/01/0151247/html/mydomain
Je sais que je l'ai comparé à Script_name et je vois le mydomain là-bas dans le chemin.
J'espère que quelqu'un pourrait me diriger.
Merci et désolé d'avoir probablement posé une autre question de la même question sur la communauté, j'ai vraiment essayé des choses d'ici, rien ne m'aide jusqu'à présent.
METTRE À JOUR
Malheureusement, je ne peux pas simplement utiliser mon fichier d'index avec Diron Comme c'est une configuration WordPress et je travaille sur un dossier séparé où j'inclus des fonctionnalités WordPress, mais pour cela, j'ai besoin d'un document_root. Si cela aiderait.
METTRE À JOUR
Apparemment, la manière suivante a résolu mon cas, cela aidera peut-être quelqu'un un jour:
realpath($_SERVER["SUBDOMAIN_DOCUMENT_ROOT"]);
Fondamentalement, en raison de la configuration du serveur et du domaine configuré comme sous-domaine.
Merci à tous ceux qui ont participé.
La solution
Avant PHP 5.3, vous pouvez mettre un fichier dans le répertoire dont vous souhaitez le chemin et définir une constante:
define('ROOT_DIR', dirname( __FILE__ ));
Après 5.3, vous pouvez simplement faire:
define('ROOT_DIR', __DIR__);
L'idée étant que ce serait config.php
d'une sorte qui est inclus à chaque fois que l'application s'exécute.
Autres conseils
METTRE À JOUR
Dans le fichier de configuration, vous pouvez simplement ajouter le DOCUMENT_ROOT
variable:
$_SERVER['DOCUMENT_ROOT'] = $_SERVER['DOCUMENT_ROOT'] . '/mydomain';
Et cela devrait s'en occuper pour vous.
Ancienne solution
La DOCUMENT_ROOT
est une variable d'environnement définie par le serveur. Donc, si cela est sur l'hébergement partagé, vous ne pouvez pas changer. Une alternative consiste à y mettre votre propre constante, donc dans un config
Tapez le fichier inclus sur vos pages, vous pouvez faire quelque chose comme:
define('DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT'] . '/mydomain');
Et puis utilisez simplement cette constante à la place de $_SERVER['DOCUMENT_ROOT']
. L'autre option consiste à contacter votre hôte et à s'en demander, peut-être que c'était une surveillance de leur part et ils le répareront.
ÉDITER
Probablement en utilisant le __DIR__
Comme d'autres l'ont publié est le meilleur moyen, comme le DOCUMENT_ROOT
peut être réglé sur différents articles et au moins avec le __DIR__
Vous devez obtenir un répertoire précis à chaque fois.
Personnellement, pour obtenir la racine d'un dossier dans PHP, je l'utilise dans le fichier My Index:
define('ROOT', dirname(__FILE__)); // __DIR__ will work under PHP 5.3