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

require avec chemin relatif (pb de ./..) - PHP - Programmation

Marsh Posté le 21-05-2006 à 17:29:43    

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
Reply

Marsh Posté le 21-05-2006 à 17:29:43   

Reply

Marsh Posté le 21-05-2006 à 20:03:19    

Et avec un :

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


:??:


Message édité par FlorentG le 21-05-2006 à 20:03:44
Reply

Marsh Posté le 21-05-2006 à 21:03:17    

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

Reply

Marsh Posté le 22-05-2006 à 01:35:56    

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
Reply

Marsh Posté le 22-05-2006 à 09:26:20    

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
Reply

Marsh Posté le 23-05-2006 à 00:21:41    

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
Reply

Marsh Posté le 23-05-2006 à 07:51:25    

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
Reply

Marsh Posté le 23-05-2006 à 09:45:16    

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 :??:

Reply

Marsh Posté le 23-05-2006 à 10:55:02    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed