$_SERVER["DOCUMENT_ROOT"] inconnue...

6 réponses
AuteurMessage

Maximus32 |
Modérateur

Photo de Maximus32

Inscrit le : 13/05/2009

# Le 01/09/2010 à 17:22

... en ligne de commande.

En fait, je veux modifier un script PHP qui s'exécute tous les soir avec CRON et je viens de m'apercevoir que lorsqu'on lance une exécution PHP en ligne de commande (sans utiliser de navigateur) PHP ne connait pas certaines variables d'environnement comme entre autres $_SERVER["DOCUMENT_ROOT"].

Y a-t-il une autre variable à utiliser dans ce cas là ou une modification dans la config d'Apache ou PHP ?
J'ai regardé dans phpinfo() mais j'ai rien trouvé d'intéressant...

Je peux évidemment passer par une variable initialisée en dur (genre $DOC_ROOT = "/home/site/www/") mais je préfère éviter.

Data-Solutions.comOuvrir dans une nouvelle fenetre

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 01/09/2010 à 17:28

Un coup de :
if (!$_SERVER["DOCUMENT_ROOT"]) $_SERVER["DOCUMENT_ROOT"] = dirname(__FILE__);

?

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 01/09/2010 à 17:31

Hello,

en fait $_SERVER['DOCUMENT_ROOT'] est fournie par Apache et est également facultative, donc dans tous les cas se baser uniquement dessus est dangereux.

Perso j'ai un fichier de config à la racine de tous les sites, donc dedans je mets un truc du genre :

define('WEB_DIR', dirname(__FILE__));

Et ce fichier est toujours inclus via un chemin relatif : require '../../bootstrap.php';

En espérant que ça puisse t'aider. En tous cas chez nous ça tourne depuis X arborescences différentes sans problèmes, avec des Apache qui ne renseignent pas le DOCUMENT_ROOT ainsi qu'en ligne de commande directement.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

PyRoFlo | Florent
Modérateur

Photo de PyRoFlo

Inscrit le : 09/05/2005

# Le 01/09/2010 à 17:33

Tout pareil que Bool.

Si t'as pas envie de reprendre tes scripts et qu'ils consomment pas énormément de ressources, tu peux les exécuter en faisant un wget au moins tu auras toutes tes variables.

Feu d'artifice ParisOuvrir dans une nouvelle fenetre

Maximus32 | Gael
Modérateur

Photo de Maximus32

Inscrit le : 13/05/2009

# Le 01/09/2010 à 18:07

Merci les gars je vais mettre ça en place, ça sera effectivement plus propre !

Data-Solutions.comOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 01/09/2010 à 22:46

Yep dob, me semblait avoir vu passé ça sur la mailing aussi. Ce sera toujours ça de pris.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Akarys | Thierry
Membre

Photo de Akarys

Inscrit le : 19/01/2008

# Le 02/09/2010 à 05:38

Rano a dit :
Un coup de :
if (!$_SERVER["DOCUMENT_ROOT"]) $_SERVER["DOCUMENT_ROOT"] = dirname(__FILE__);

Attention, à ce genre de bidouille, d'autant qu'il est prévu que les variables d'environnement PHP ($_SERVER, $_GET, ...) passent en "constantes" dans une version Php 6.* ...

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 15/05/2024 11:04:30 | Généré en 12.59ms | Contacts | Mentions légales |