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

  FORUM HardWare.fr
  Programmation
  PHP

  Incident OpenbaseDir

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Incident OpenbaseDir

n°1722755
francoisch​1
Posté le 23-04-2008 à 13:32:07  profilanswer
 

Bonjour
 
La fonction messlecture.php, que je développe, appelle la fonction connexion.php :

Code :
  1. require_once ("../../connexion.php" );


sans succcès :
Warning: main() [function.main]: open_basedir restriction in effect. File(../../connexion.php) is not within the allowed path(s): (/mnt/167/sda/f/b/fctestmad) in /mnt/167/sda/f/b/fctestmad/martinot/reserve/messlecture.php on line 15
 
Warning: main(../../connexion.php) [function.main]: failed to open stream: Operation not permitted in /mnt/167/sda/f/b/fctestmad/martinot/reserve/messlecture.php on line 15
 
Fatal error: main() [function.require]: Failed opening required '../../connexion.php' (include_path='/mnt/167/sda/f/b/fctestmad/include:.:/usr/php4/lib/php') in /mnt/167/sda/f/b/fctestmad/martinot/reserve/messlecture.php on line 15
 
J’ai essayé avec Require, Include, sans success.
 
Quelques infos:
- La structure des répertoires, pour partie:
o - racine: connexion.php
o ---- martinot: …
o ------- reserve: messlecture.php
Dans cette même structure, j’ai des fonctions qui sont opérationnelles, comme :
o - racine: connexion.php
o ---- martinot: …
o ------- reserve: messaction.php (même appel avec require_once ("../../connexion.php" );)
 
J’ai fait un test très simplifié avec ces fonctions réduites aux ordres d’appel : même résultat.
 
Cette structure de répertoires est donc très simple, entièrement installée sous la racine du site ; je ne vois aucun motif qui puisse activer OpenBaseDir.
 
Je sèche ; j’aurais loupé un truc gros comme une maison ?
 
Est-ce que OpenBaseDir peut godiller parfois ? Peut-être un problème d’hébergeur ?
 
Est-ce que j’efface tout sur mon site pour tout recréer ?
 
Par avance merci de votre aide.
 
Francois

mood
Publicité
Posté le 23-04-2008 à 13:32:07  profilanswer
 

n°1722773
skeye
Posté le 23-04-2008 à 13:47:59  profilanswer
 

tu n'as pas le droit d'aller toucher à des choses en-dehors de ta racine...tu es sûr de ne pas être remonté un cran trop haut?


---------------
Can't buy what I want because it's free -
n°1722816
francoisch​1
Posté le 23-04-2008 à 14:18:14  profilanswer
 

Non, je ne crois pas, même si ce serait une excellente explication.
 
messlecture.php est 2 niveaux sous connexion.php.
 
Francois

n°1722821
Melendril
Posté le 23-04-2008 à 14:22:50  profilanswer
 

Salut,
 
Tu as essayé en mettant des chemins absolus ?

n°1722824
soju
One shot !
Posté le 23-04-2008 à 14:24:40  profilanswer
 

avec open_basedir activé il faut utiliser un chemin absolu
 
edit: grilled

Message cité 1 fois
Message édité par soju le 23-04-2008 à 14:25:00
n°1722831
francoisch​1
Posté le 23-04-2008 à 14:29:47  profilanswer
 

J'utilise le même chemin relatif avec mon appel par messaction.php (installé dans le même répertoire que messlecture.php) du même connexion.php et ça marche bien.
 
FFrancois

n°1722843
soju
One shot !
Posté le 23-04-2008 à 14:40:57  profilanswer
 

bizarre, les 2 scripts sont appelés de la même façon ? (directement ou à partir d'un autre script ?)
en tous cas en attendant essaye avec le chemin absolu, ça ne coute rien

n°1722847
Melendril
Posté le 23-04-2008 à 14:42:55  profilanswer
 

soju a écrit :

avec open_basedir activé il faut utiliser un chemin absolu


Faux, open_basedir permet de juste de restreindre les tentatives d'accès a un fichier que si ce fichier se trouve dans un ou plusieurs répertoire ( cf http://fr.php.net/manual/fr/featur [...] en-basedir )
 
francoisch1, j'ai bien compris que cela marche ailleurs, mais je te demande quand même de tester avec un chemin absolu. En fonction de la config du serveur, les règles peuvent changer d'un répertoire a l'autre.

Message cité 1 fois
Message édité par Melendril le 23-04-2008 à 14:46:05
n°1722855
soju
One shot !
Posté le 23-04-2008 à 14:51:11  profilanswer
 

Melendril a écrit :

Faux, open_basedir permet de juste de restreindre les tentatives d'accès a un fichier que si ce fichier se trouve dans un ou plusieurs répertoire

merci mais je savais déjà et par expérience pour éviter ce genre de problème il vaut mieux utiliser un chemin absolu

n°1723059
francoisch​1
Posté le 23-04-2008 à 17:40:05  profilanswer
 

bonjour et merci de vos réponses.
 
Oui, j'avais fait le test avec un chemin absolu et ça fonctionne; j'aimerai autant que possible éviter le chemin absolu.
 
Simplement, mes deux appels:
- sont tous les deux à connexion.php
- depuis le même répertoire (reserve)
- par deux fonctions qui utilisent Require_once
 
Dans un cas, ça marche et pas dans l'autre.
 
C'est pourquoi j'aurais tendance à croire à un incident sur mon appel qui ne marche pas.
 
Une idée: effacer tour et recommencer?
 
Merci de vos conseils dans ce cas assez trouble.
 
Francois

mood
Publicité
Posté le 23-04-2008 à 17:40:05  profilanswer
 

n°1723064
Melendril
Posté le 23-04-2008 à 17:43:22  profilanswer
 

Petite question :
 
Le fichier dans lequel tu fais le require_once, c'est celui que tu exécutes ou il est lui même inclus ?
 
Si c'est le deuxième choix, le chemin relatif se construit non pas du messlecture.php mais du fichier qui l'inclut.

n°1723079
masterpsx
Aigloun foutougrafe
Posté le 23-04-2008 à 17:57:11  profilanswer
 

Montre nous une partie du code qui contient ton require_once(), on ne sais jamais mais comme te l'as dis Melendril méfie toi du path lorsque ton fichier est lui même inclus à un autre, c'est l'erreur classique qui peut amener une erreur de ce genre.

n°1723081
francoisch​1
Posté le 23-04-2008 à 18:00:55  profilanswer
 

bonjour Melendril
 
Le fichier qui exécute le Require_once est lui-même inclus dans un autre fichier.
 
Cet autre fichier est situé un répertoire plus haut que celle du Require.
 
Vite vu:
- la fonction initiale est au niveau 2
- la fonction du Require est au niveau 3
- la fonction connexion.php est au niveau 1 (racine)
 
Oui, à propos, c'est vrai que, dans le cas qui fonctionne, la fonction initiale est elle-même au niveau 3, soit au même niveau que la fonction du Require.
 
J'ai bien l'impression que tu as mis le doigt dessus.
 
Il faudrait donc que j'enlève un groupe ../ dans l'appel
 
Je vais essayer.
 
Francois

n°1723087
francoisch​1
Posté le 23-04-2008 à 18:08:09  profilanswer
 

Oui, ça marche, c'était donc ça.
 
J'ignorais tout à fait que le fichier inclus "héritait" de la "hiérarchie" de niveau du fichier appelant.
 
Connaitriez vous une doc en ligne où je pourrait creuser un peu ce sujet pour ne pas me faire reprendre à un autre coin de rue sur ce sujet des niveaux?
 
Merci en tout cas de tous vos efforts car votre aide a été précieuse.
 
Francois

n°1723110
skeye
Posté le 23-04-2008 à 18:42:33  profilanswer
 

francoisch1 a écrit :

Oui, ça marche, c'était donc ça.
 
J'ignorais tout à fait que le fichier inclus "héritait" de la "hiérarchie" de niveau du fichier appelant.
 
Connaitriez vous une doc en ligne où je pourrait creuser un peu ce sujet pour ne pas me faire reprendre à un autre coin de rue sur ce sujet des niveaux?
 
Merci en tout cas de tous vos efforts car votre aide a été précieuse.
 
Francois


il faut juste garder à l'esprit qu'en php inclure un fichier c'est comme copier/coller son code dans le fichier courant...


---------------
Can't buy what I want because it's free -
n°1723118
francoisch​1
Posté le 23-04-2008 à 19:08:24  profilanswer
 

OK, bien noté et merci.
 
Francois


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

  Incident OpenbaseDir

 

Sujets relatifs
Plus de sujets relatifs à : Incident OpenbaseDir


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)