include() et define() problème extraordinaire !

Petit nouveau ! | 3 Messages

18 juin 2009, 23:57

Bonjour à tous,

J'ai un problème que je trouve extraordinaire et que je vous livre tel quel avec le code et le résultat obtenu.

1er test :

je lance 1.php :
<?PHP
define("TEST", "ceci est mon test");
echo"".TEST."";
?>
résultat :

Code : Tout sélectionner

ceci est mon test

Rien à redire !

2eme test :

je lance 1.php:
<?PHP
include("http://".$_SERVER['SERVER_ADDR']."/2.php");
echo"".TEST."";
?>
2.php a ceci :
<?PHP
define("TEST", "ceci est mon test");
?>

le résultat est :

Code : Tout sélectionner

Notice: Use of undefined constant TEST - assumed 'TEST' in C:\Program Files\EasyPHP 3.0\www\1.php on line 3 TEST
:shock:

Ok, je désactive le e_notice dans mon php.ini et j'ai :

Code : Tout sélectionner

TEST
re- :shock: (quoique vu le résultat précédent....)

Je roule en php5.

Est-ce quelqu'un peut me dire où est l'erreur, l'idée étant d'afficher sur le fichier 1.php une constante qui se trouve dans 2.php en faisant un include().

Merci à celui ou celle qui me soulagera......
dede

Eléphanteau du PHP | 15 Messages

19 juin 2009, 02:02

Qu'est ce que qui est étonnant ?

quand tu inclus un fichier commençant par http il te rend du html donc déjà compiler et tout remplace ton url par un chemin absolu

Petit nouveau ! | 3 Messages

19 juin 2009, 08:51

bonjour shine-neko,

je suis d'accord avec toi concernant le chemin absolu vs http.

Mais comme je fais un include() avec une variable en argument, je dois lancer http.

Bon, tout à coup un doute m'assaille, parce qu'évidemment le contexte de mon code n'est pas aussi simple que mon exemple. Je vais vérifier.

En attendant, j'ai changé la manière de faire et utilise un array() au lieu des define() et ça le fais pour moi.

Donc ce problème est devenu de la pure curiosité intellectuelle.

Merci en tout cas à toi de m'avoir répondu.