Bonjour a tous

voila j'aimerai comprendre pourquoi ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$contenu = file_get_contents($url);
renvoit :

Warning: file_get_contents(http://localhost/NewFolder/new5.php) [function.file-get-contents]: failed to open stream: HTTP request failed! in C:\wamp\www\NewFolder\new5.php on line 6
(sachant que le fichier existe bien a l'adresse en question)

alors que :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
	$self = basename($_SERVER['PHP_SELF']);
	$contenu = file_get_contents("$self");
fonctionnera parfaitement.

L'erreure du premier semble venir du fait que la fonction s'appelle en boucle comme si le contenu appelé etait executé.

D'ou l'etrangeté que le deuxieme marche parfaitement.

suite a une discussion avec onet sur le chat, on en est arrivé a supposer que ce serait par securité que php permettrait d'accéder a la source pour un appel type file_get_contents('file.php') mais qu'il executerait le code pour un appel type file_get_contents('http://url.com/file.php'). (afin de ne pas recupéré les fichiers config d'un site (dixit onet)).


Qu'en pensez vous? Quelqu'un aurait il l'explication?