Parfois $ _ Server ['document_root'] code> retourne avec une barre oblique suivante. Dans d'autres environnements, ce n'est pas le cas. Où peut-il être spécifié? P>
7 Réponses :
Je pense que cela dépend de la configuration du serveur si la racine Web est définie avec ou sans une barre oblique de passage. Vérifiez simplement que cela se trouve sur chaque système égal. P>
Voir aussi le ServerRoot-Directive du Documentation Apache. P>
Vous ne pouvez pas dire à l'avance si normalement, si correctement configuré, il est pas em> contient une barre oblique de fuite. Sur Ubuntu (ainsi que sur un autre Unix), un chemin d'accès correctement écrit à un répertoire n'a pas le Mais il y a une exception, si vous faites votre répertoire racine ( Dans tous les cas, il contient la valeur du $ _ serveur ['document_root'] code> contient une barre oblique à la fin ou non. p>
/ code> à la fin. Sous Windows, par exemple, Apache refusera même de démarrer s'il est configuré avec un. Sur UNIX Apache n'est pas si difficile et permet une barre oblique traînante. P>
/ code>) votre racine de document. En raison de cette affaire, vous ne pouvez pas dire à l'avance s'il contient ou non une barre oblique de fuite. P>
DocumentOrot Code> Directive < / a> - avec ou sans escalier Slash comme il a été écrit dans le fichier de configuration httpd. PHP ne prend que la valeur de Apache. Pour obtenir la racine de documents réel, utilisez
realpath code>
et / ou sous condition d'ajouter une barre oblique (ou retirez-la) à la fin si dans votre fichier de configuration ou dans votre code PHP. p>
Merci beaucoup que les informations ont vraiment aidé, j'ai utilisé real_path code> pour résoudre le même problème
J'ai tendance à utiliser le répertoire actuel plus que j'utilise Docroot car il fonctionne également bien sur la ligne de commande et dans les tests unitaires également. J'ai tendance à utiliser quelque chose comme: plutôt que: p> Je l'ai vu d'abord dans WordPress Source et il y a beaucoup aimé, mais ça peut conduire à beaucoup de "../" répétition. p> ps
Vous pouvez faire comme ça, afin de vous assurer que la barre oblique est toujours présente
'/'. Couper ($ _Server ['Document_root'], '/' P> < Pré> xxx pré> p>
La réponse hakre est la bonne. J'ai essayé d'utiliser Inclure dans différentes situations, dans un script de console ou sur un serveur Web. Mon meilleur pari était d'utiliser un chemin absolu, en commençant par document_root. Mais j'étais toujours coincé à cause de cette barre oblique. Voici ce qui semble être une bonne solution: P>
include_once getenv b> ("document_root"). " ./ B> Web-Inf / Classes P>
Apprisez ensuite votre script avec PHP Test.php à partir d'un script de lot et mettez une valeur à Document_root env variable ou non, avec une barre oblique de fuite ou non. Lorsqu'il est chargé d'Apache, Getenv est déjà rempli. P>
Le moteur PHP peut gérer avec ././, en disant la même chose que ./. De la même manière, htdocs./ est interprété a HTDOCS / (sous Windows) P>
Une ancienne question, je sais, mais comme ça m'a donné une idée de la façon de résoudre ceci pour moi, je vais simplement ajouter ma solution ici. Je voulais définir une constante (rootpath) avec le $ _Server ["document_root"] et vous assurer qu'il a une barre oblique (Directory_Separator).
define('ROOTPATH', (!ctype_alnum(substr($_SERVER['DOCUMENT_ROOT'], -1)) ? substr($_SERVER['DOCUMENT_ROOT'], 0, -1) : $_SERVER['DOCUMENT_ROOT']));
Lorsque vous utilisez des hôtes virtuels, Apache écrit dans Mais ce n'est pas une bonne décision car différents tisers traitent ce paramédente différemment, votre application ne doit pas compter sur elle et doit déterminer la présence de slash de traction sans assistance. P> € _ Server ['Document_root'] Code> La valeur de
DocumentOrot code> de l'hôte virtuel. Donc, vous pouvez écrire de la barre oblique. p>
Je ne sais pas que peut être spécifié i>. Quels serveurs fonctionnent dans les différents environnements?
$ _ serveur ['document_root'] = sprintf ('% s /', rtrim ($ _ serveur ["document_root '],' / ')); code>
@Alixaxel n'aurait-il pas que RTRIM a également potentiellement couper les espaces? Et si la racine du document a des espaces blanche?
Il ne fera que couper uniquement les espaces si vous n'utilisez pas le deuxième argument @cmcdragonkai.