2010-04-29 5 views
0

Je me demandais s'il y a une variable qui renverra ce _SERVER $ [ « DOCUMENT_ROOT »] retourne quand je l'appelle PHP comme ceci: ./somescript

Sinon, comment les gens se débrouillent-ils? Je cherche à être en mesure d'appeler le même script (un compilateur de modèle) à la fois dans le navigateur Web et le terminal.

Merci! Matt Mueller

+0

* DOCUMENT \ _ROOT * est une variable d'environnement définie par le serveur Web. – Gumbo

+0

Yah. C'est pourquoi ce n'est pas défini. – Matt

Répondre

3

Je ne recommande pas la commande getcwd() pour cela parce que vous ne pouvez pas être sûr de l'endroit où cwd pointe vers le moins que vous avez fait une chdir avant (ce qui signifie que vous savez déjà quel répertoire vous êtes dans). Le répertoire de travail peut être défini dans php config et varier entre apache et CLI, et certains framework php le change au démarrage.

Utilisez dirname(__FILE__) cela fonctionne toujours que vous soyez dans un contexte apache ou cli (plus cela fonctionne sous windows et unix), et si vous devez vous déplacer dans vos fichiers de projet, vous pouvez simplement utiliser des chemins relatifs.

+0

dirname (__ FILE__) n'est pas un synonyme de DOCUMENT_ROOT. Go figure –

+0

ne l'a pas écrit, mais supposé fonctionner à partir d'un script de contrôleur frontal, vous devriez obtenir la racine du document, et d'exécuter ailleurs dans un projet, vous pouvez analyser avec le chemin relatif pour obtenir la racine du document sans créer de dépendance – Benoit

-1

Le document contient un code racine.
hardcode est toujours une solution

+0

Malheureusement, ce n'est pas vraiment une option parce que je cherche à distribuer le code. – Matt

+0

@Matt omg distribuer. faites alors un script d'installation qui déterminera la racine du document et le codera pour vous. vous pouvez toujours utiliser des chemins relatifs. –

+0

Ajoutez simplement: * Une configuration est requise. – erisco

1

Je pense que vous devriez utiliser la fonction getcwd pour obtenir le répertoire courant (ou tout simplement dirname (__FILE__) si votre script est celui du haut). Ensuite, vous devez seulement être sûr d'exécuter le script depuis votre DOCUMENT_ROOT. Quelque chose comme ceci:

cd /var/www/ 
php ./scripts/top.php 
+0

Hmm. J'ai essayé cela avant, je suis presque sûr que ça n'a pas marché car le cwd n'était pas toujours le même. Il semble que ce pourrait être ma seule option cependant. Merci! – Matt

+0

Vous avez juste besoin d'être sûr que vous avez fait 'cd' dans le répertoire requis avant d'exécuter le script. –

+0

la question est comment déterminer le répertoire requis –

Questions connexes