Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2905 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  require avec chemin relatif (pb de ./..)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

require avec chemin relatif (pb de ./..)

n°1371624
Eric B
Posté le 21-05-2006 à 17:29:43  profilanswer
 

Comment faire accepter un chemin relatif ds un require/include par Apache2 ?
Il me jette sur un
require_once("./../config/monfichier.conf.php" );  
il semblerait que cela soit du au include_path par défaut à '/'.
 
Des idées?
 
En fait, j'essaie d'appliquer ce qui est expliqué ici:
http://www.sitepoint.com/article/php-security-blunders avec une structure de ce style:
 

Code :
  1. /home
  2. /httpd
  3.    /config
  4.        monfichier.conf.php
  5.    /www
  6.        index.php


 
J'ai configuré un Redirect permanent de / vers ]/home/httpd/www ds Apache2, et souhaite accèder au fichier monfichier.conf.php.
Un require_once("/home/httpd/config/monfichier.conf.php" ); fonctionne bien, j'aimerais qqch de plus flexible pour éviter de  changer le code lorsque je rapatrie le site sur mon PC.
J'utilise la méthode $currentDir = getcwd(); pour chopper le rep courant.
 
Mon objectif est d'améliorer la sécurité en mettant les identifiants de connection de mysql hors de du www. Les conseils de sécurité sont donc la bienvenue. Quels sont les risques exactement avec un chemin relatif?
 
Ou est ce simplement qu'Apache refuse un .. pour éviter par ex un monsite.org/.. ?
 
Que pourrais je faire alors pour que cela marche correctement?


Message édité par Eric B le 21-05-2006 à 17:40:19
mood
Publicité
Posté le 21-05-2006 à 17:29:43  profilanswer
 

n°1371672
FlorentG
Unité de Masse
Posté le 21-05-2006 à 20:03:19  profilanswer
 

Et avec un :

require(realpath(dirname(__FILE__) . '../config/monfichier.conf.php'));


:??:


Message édité par FlorentG le 21-05-2006 à 20:03:44
n°1371710
Eric B
Posté le 21-05-2006 à 21:03:17  profilanswer
 

non, pas mieux.
Tant pis, je crois que je vais me contenter des full paths.

n°1371821
Djebel1
Nul professionnel
Posté le 22-05-2006 à 01:35:56  profilanswer
 

je dois avouer que c'est un truc que j'ai jamais compris en php :(
Mais comme un chemin absolu c'est peu pratique, j'ai fait un truc caca de chez caca : utiliser une méthode statique qui te donne la racine de l'appli (ouais je sais, c'est vilain, mais au moins jpeux déplacer mon appli  :o )


Message édité par Djebel1 le 22-05-2006 à 01:36:12
n°1371872
Eric B
Posté le 22-05-2006 à 09:26:20  profilanswer
 

dans mon cas, puisque je veux inserer un fichier qui est avant meme la racine de l'appli, ta solution ne m'aide guère plus.  
 
Quoique... Peut etre puis je jouer avec les split pour extraire le rep parent du rep racine de l'appli, et ainsi éviter les "..";


Message édité par Eric B le 22-05-2006 à 09:27:29
n°1372736
Eric B
Posté le 23-05-2006 à 00:21:41  profilanswer
 

En cherchant sur PHP manuel, la fonction realpath est bien la bonne.
Je pensais avoir réussi avec un:
require_once(realpath(getcwd()'../config/monfichier.conf.php'));
Mais Apache me dit tjs Fatal error: main() [function.require]: Failed opening required '' (include_path='.:')

Message cité 1 fois
Message édité par Eric B le 23-05-2006 à 00:28:52
n°1372781
sielfried
Posté le 23-05-2006 à 07:51:25  profilanswer
 

Tu peux te définir des constantes qui varient en fonction du fait que t'es en local ou sur ton serveur web.
 
Un truc du style :

Code :
  1. define('LOCAL', $_SERVER['HTTP_HOST'] == '127.0.0.1');
  2. define('ROOT_PATH', LOCAL ? '...' : '/home/httpd/');
  3. define('CONFIG_PATH', ROOT_PATH . 'config/');
  4. define('WWW_PATH', ROOT_PATH . 'www/');


Message édité par sielfried le 23-05-2006 à 07:51:50

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1372822
FlorentG
Unité de Masse
Posté le 23-05-2006 à 09:45:16  profilanswer
 

Eric B a écrit :

En cherchant sur PHP manuel, la fonction realpath est bien la bonne.
Je pensais avoir réussi avec un:
require_once(realpath(getcwd()'../config/monfichier.conf.php'));
Mais Apache me dit tjs Fatal error: main() [function.require]: Failed opening required '' (include_path='.:')

 


C'est chelou, parce que realpath retourn un chemin absolut, qui est censé donc transformé ton truc en '/home/httpd/config/monfichier/php'. Et les chemins absoluts fonctionnent toujours par rapport a du relatif, et sont en plus plus rapide (pas besoin de fouiller dans les includes paths).

 

Fait une fois un echo sur ce que retourne realpath, pour vérifier que ça retourne la bonne chaîne :??:

n°1372911
Eric B
Posté le 23-05-2006 à 10:55:02  profilanswer
 

le echo me retourne bien la bonne chaine, c'est là le plus strange...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  require avec chemin relatif (pb de ./..)

 

Sujets relatifs
Afficher le nom d'un fichier sans chemin d'acces ni extension[Chemin avec espaces] Comment echapper les espaces ?
choisir le chemin de création d'un fichier txtrécupérer le chemin du repertoire 'Poste de travail' sous windows
[javadoc] chemin d'accesle chemin de la gloire (hack)
recuperer chemin fichierchemin fichier
[PHP] *Resolu * Problème de chemin avec les "include"[Perl] chemin absolu/relati
Plus de sujets relatifs à : require avec chemin relatif (pb de ./..)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR