Variables php globales

Bonjour,

Je voudrais réutiliser ma bibliothèque php sous dans mes squelettes.

Certains de ses fichiers contiennent des include de la forme :
include ("$DOCUMENT_ROOT/include/template.php");
                                 ^^^^^^^^
template.php contenant lui-même :
include( "$DOCUMENT_ROOT/include/xHtml.php");

*
J'inclus ma bibliothèque dans SPIP grâce à mes_fonctions.php par
(je suis passé en php4)
include ("$DOCUMENT_ROOT/include/template.php");

-> marche pas, $DOCUMENT_ROOT est vide

*
J'inclus ma bibliothèque dans mes_fonctions.php par
include ("{$GLOBALS['DOCUMENT_ROOT']}/include/template.php");

template.php est bien inclus, mais l'erreur est décalée dans celui-ci
qui contient
include( "$DOCUMENT_ROOT/include/xHtml.php");

Pourquoi la variable $DOCUMENT_ROOT est-elle vide sous spip, alors que
ça marche bien dans mes fichiers natifs php ?

--
Cordialement, Stéphane *** http://www.team-santonum.com
     Loisirs, nature, arts, technologie : accueil en Charente-Maritime
                                  *** http://faqelec.team-santonum.com
     F.A.Q. fr.sci.Electronique Electrotechnique Automatique Domotique

Je voudrais réutiliser ma bibliothèque php sous dans mes squelettes.

Certains de ses fichiers contiennent des include de la forme :
include ("$DOCUMENT_ROOT/include/template.php");
                                 ^^^^^^^^
template.php contenant lui-même :
include( "$DOCUMENT_ROOT/include/xHtml.php");

*
J'inclus ma bibliothèque dans SPIP grâce à mes_fonctions.php par
(je suis passé en php4)
include ("$DOCUMENT_ROOT/include/template.php");

-> marche pas, $DOCUMENT_ROOT est vide

*
J'inclus ma bibliothèque dans mes_fonctions.php par
include ("{$GLOBALS['DOCUMENT_ROOT']}/include/template.php");

template.php est bien inclus, mais l'erreur est décalée dans celui-ci
qui contient
include( "$DOCUMENT_ROOT/include/xHtml.php");

Pourquoi la variable $DOCUMENT_ROOT est-elle vide sous spip, alors que
ça marche bien dans mes fichiers natifs php ?

Salut,

je sais pas pourquoi ca marche pas, mais j'ai aussi eu le probleme.
Voila la solution, a mettre dans mes_fonctions.php3 :
$DOCUMENT_ROOT=$GLOBALS['DOCUMENT_ROOT'];

tentative d'explication quand meme (je suis pas un gourou de PHP hein !)
: ton code est evalue a l'interieur d'une procedure, qui ne connait pas
$DOCUMENT_ROOT, puisqu'il n'est pas propage a travers les appels de
fonctions. donc il faut redefinir la variable, qui est du coup locale a
la procedure. Si quelqu'un peu confirmer ou infirmer...

Joel

Bonjour,

Merci ! :-))

Je commençais à croire que mes différents messages n'étaient pas lus !

Joel HATSCH a écrit :

> Pourquoi la variable $DOCUMENT_ROOT est-elle vide sous spip, alors que
> ça marche bien dans mes fichiers natifs php ?

je sais pas pourquoi ca marche pas, mais j'ai aussi eu le probleme.
Voila la solution, a mettre dans mes_fonctions.php3 :
$DOCUMENT_ROOT=$GLOBALS['DOCUMENT_ROOT'];

--
Cordialement, Stéphane *** http://www.team-santonum.com
     Loisirs, nature, arts, technologie : accueil en Charente-Maritime

Pourquoi la variable $DOCUMENT_ROOT est-elle vide sous spip, alors que
ça marche bien dans mes fichiers natifs php ?

sans doute pour cette raison :

toi.php:
<?php

echo "DOCUMENT_ROOT = $DOCUMENT_ROOT\n";

// on est en portée global ; pas dans une fonction
include("$DOCUMENT_ROOT/toto.php");

?>

spip.php:
<?php

// l'include n'est pas dans le contexte global, mais intégré a une fonction (l'analyseur).
// note que la version 2 devrait passer.
parseur_spip();
// parseur_spip2(); // devrait fonctionner dans ton cas.

function parseur_spip(){
  echo "DOCUMENT_ROOT = $DOCUMENT_ROOT\n";
  include("$DOCUMENT_ROOT/toto.php");
}

function parseur_spip2(){
  global $DOCUMENT_ROOT;
  echo "DOCUMENT_ROOT = $DOCUMENT_ROOT\n";
  include("$DOCUMENT_ROOT/toto.php");
}

?>

PS: pourquoi ma reponse n'est pas passée ?

Salut,

On Sun, 31 Aug 2003, Marc Quinton wrote:

PS: pourquoi ma reponse n'est pas passée ?

Si tu as un problème de ce genre, tu peux écrire à spip-owner@rezo.net.
En général, un message ne passe pas, parcequ'il:
- est trop gros (plus de 40ko)
- met en copie l'autre liste (spip-dev)
- possède une adresse invalide (comme "spip@rezo.net <spip@rezo.net>")
- a été pris pour du spam par spamassassin ou par un modérateur.

Seul la derniere option sera faite silencieusement (sinon, on envoie un
courriel pour expliquer pourquoi le message est refusé).

Et on peut aussi faire des erreurs... Désolé.

  Yannick

--
_/ Yannick Patois _________________ Address (home) __________________
| irc(undernet): Garp on #france25+ | 17, rue du Tonkin |
| email : patois@calvix.org | Apt. 9G, 3iem |
| http://garp.feelingsurfer.net/ | 69100 Villeurbanne |
| Tel-home: +33 (0)4 78 89 76 47 | FRANCE |