Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉCUPÉRER LE CHEMIN RELATIF DU SCRIPT


Information sur la source

Description

Cette fonction permet de revenir à la racine du site pour y atteindre d'autres répertoires.
 

Source

  • function chemin()
  • {
  • $a=$_SERVER['PHP_SELF'];
  • $b=strrev($a);
  • $c=strpos($b,'/');
  • $d=substr($b,$c,strlen($b)-$c);
  • $e=strrev($d);
  • $f=substr_count($e,'/')-1;
  • $g='';
  • for ($i=0;$i<$f;$i++)
  • $g.='../';
  • return $g;
  • }
	function chemin()
	{
		$a=$_SERVER['PHP_SELF'];
		$b=strrev($a);
		$c=strpos($b,'/');
		$d=substr($b,$c,strlen($b)-$c);
		$e=strrev($d);
		$f=substr_count($e,'/')-1;
		$g='';
		for ($i=0;$i<$f;$i++)
			$g.='../';
		return $g;
	}

Conclusion

exemple :

$pth=chemin();

include $pth.'include/monfichier.php';

A++
 

Commentaires et avis

signaler à un administrateur
Commentaire de malalam le 09/05/2005 17:45:34 administrateur CS

Hello,

heu...outre le fait que ce n'est pas tres tres bien code...je m'arrete d'ailleurs pour expliquer :
- prefere des noms de variables EXPLICITES, parce que $a, $b, $c..apres, pour debugger ca ou pour modifier le script, bonjour l'angoisse!
- c'est trop long. IL suffit de compter le nombre de / avant celui qui separe le dernier repertoire et le fichier...

Donc, outre ca, tu seras sans doute heureux d'apprendre qu'il existe une variable bien pratique  :

$_SERVER['DOCUMENT_ROOT'];

Je te laisse la tester :-)


signaler à un administrateur
Commentaire de glad le 10/05/2005 07:29:23

hello,

Oki, je vais revoir ma copie ;-)
A++

signaler à un administrateur
Commentaire de glad le 10/05/2005 07:42:09

re,

je ne savais plus pourquoi je fesais comme ça, et en essayant ton truc, ça m'est revenu !!


http://www.secuser.com/article.php?ID=8468

soit le code suivant :

<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>

IIS (5) me retourne le message suivant :

Notice: Undefined index: DOCUMENT_ROOT in E:\Inetpub\www\test.php on line 3

Alors que ton astuce fonctionne très bien sous Apache...

Le pb est que c'était pour un intranet qui est sous IIS pour l'instant, je revois tout pour Apache...

voili voilou

signaler à un administrateur
Commentaire de malalam le 10/05/2005 09:10:52 administrateur CS

A mon avis, c'est plutot une config du php.ini ca.

signaler à un administrateur
Commentaire de glad le 10/05/2005 11:50:24

ha bon ! Normalement sauf caga... de ma part, je fais un copié/collé du php.ini sur mes serveurs, en modifiant juste les chemins d'accès aux include...

je crois que c'est IIS qui est pas top

signaler à un administrateur
Commentaire de malalam le 10/05/2005 12:00:50 administrateur CS

Oui c'est possible, c'est en effet une config serveur.

Tien:
http://de2.php.net/manual/en/reserved.variables.php#reserved.variables.server

Il y a d'autres variables qui peuvent t'amener au meme resultat bcp plus simplement, de toutes facons :-)

signaler à un administrateur
Commentaire de GRenard le 10/05/2005 13:52:14

Attention, avec DOCUMENT_ROOT si ton fichier est dans un répertoire d'un alias, tu n'auras pas ce que tu veux
De plus, au lieu de faire strrev, utilise strrpos ?

DOCUMENT_ROOT n'est pas disponibles sur les serveurs Tweakés IIS, je trouve ca totalement débile, j'ai un hébergeur d'une compagnie qui a ça et j'avais complètement envi de les envoyer chier.

signaler à un administrateur
Commentaire de glad le 10/05/2005 14:36:00

donc si je suis bien, un truc ds le style :

<?php
// Pour IIS, sur Apache $_SERVER['DOCUMENT_ROOT'] suffit !
// Merci malalam pour cette info
$Chemin_Complet_script=$_SERVER['PHP_SELF']; // Récupération du chemin du script
    //$Nom_Serveur_inverse=strrev($a);
    echo 'Chemin_Complet_script : '.$Chemin_Complet_script.'<br />';
    $OuCa=strrpos($Chemin_Complet_script,'/'); // Position du dernier /
    echo 'OuCa : '.$OuCa.'<br />';
    $Chemin_Seul=substr($Chemin_Complet_script,$OuCa,strlen($Chemin_Complet_script)-$OuCa);
    //$e=strrev($d);
    echo 'Chemin_Seul : '.$Chemin_Seul.'<br />';
    $nb_slash=substr_count($Chemin_Seul,'/')-1; // Nombre de /
    $pth='';
    echo 'nb_slash : '.$nb_slash.'<br />';
    for ($i=0;$i<$nb_slash;$i++)
     $pth.='../';
    echo 'path : '.$pth;    
?>

serait mieux (pour IIS), ou je me complique encore la vie ?

Ce satané serveur a de sacrés limitations!!

signaler à un administrateur
Commentaire de malalam le 10/05/2005 14:40:03 administrateur CS

En tous cas, bien pour les variables :-)

signaler à un administrateur
Commentaire de malalam le 10/05/2005 14:53:23 administrateur CS

Sinon, si ton but est de revenir au root de ton site, tu as cette variable :
$_SERVER['HTTP_HOST']

signaler à un administrateur
Commentaire de Cyrille2 le 12/05/2005 18:45:34 administrateur CS

Sinon, il est possible d'utiliser des PATHS absolus afin de lever tte ambiguité. De plus, $_SERVER contient des données sur le script d'appel or dans un include... ce n'est pas forcémment le bon chemin !

Il existe une constante "magique" qui permet d'obtenir le path absolu d'un fichier, meme dans un fichier inclus : __FILE__

De plus, associé à la fonction dirname(), ceci constitue un très bon moyen de définir un path de base ds un fichier de configuration par exemple...

Exemple : même structure de site, memes fichiers de base mais configurations différentes (notamment en matière de PATHs :)) :
http://cyrille2.free.fr/
http://cyrille2.free.fr/inshat/ (en cours)
http://cyrille2.free.fr/exetron/ (en cours aussi)

signaler à un administrateur
Commentaire de glad le 13/05/2005 08:08:18

Et bin !
je ne pensais pas suciter un tel débat avec cette source !!:-)

PhpCS is alive :p

signaler à un administrateur
Commentaire de malalam le 14/05/2005 11:36:33 administrateur CS

$_SERVER['DOCUMENT_ROOT'] renvoie tjrs (quand le serveur est configure pour renvoyer cette valeur evidemment) le root du document (donc du site), aucun rapport avec les include() que tu peux avoir.
__FILE__ doit de toutes facons etre parsee. Mais oui cette constante est tres utile :-)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,31 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.