IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Basedir restriction et chemin dynamique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Par défaut Basedir restriction et chemin dynamique
    J'ai un script qui est dans un certain répertoire "monsite/chemin1/scrip.php"
    et qui doit écrire dans un fichier "monsite/chemin2/file"

    de plus chemin1 est de longueur variable (le même script tourne dans plusieurs répertoires, sous répertoires, etc) de sorte que je ne peut pas utiliser les classiques ../ pour faire un chemin relatif et remonter dans l'arborescence.

    sachant que "monsite" est le répertoire (sur le serveur) où de trouve mon site. Je suis sur un serveur mutualisé et j'ai base_dir restriction: tout chemin du genre "c:/chemin/sur/le/serveur/monsite" est refusé par fopen().


    Comment faire dans ce cas? Existe t-il une fonction ou un moyen d'écrire un chemin qui soit relatif à "monsite"?

    Merci de me renseigner

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonjour,
    peut-être en comparant le chemin absolu du script et celui du fichier. Après ça, je pense que vous trouverez facilement comment accéder au fichier... enfin j'espère.

    Cordialement,
    DaRiaN.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Par défaut
    Merci DaRiaN pour le nouveau titre.


    Oui, en faisant quelque traitement de chaine, je devrais y arriver.

    Mais en général les choses sont bien faites en PHP, et i devrai y avoir une fonction ou une variable qui renvoie la partie serveur du chemin:
    $_MACHIN_PHP = "C://chemin/sur/le/serveur/monsite"

    parce que aussi je compte utiliser le même script sur plusieurs sites...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    $_SERVER['DOCUMENT_ROOT'] doit vous donner le chemin absolu correspondant à la racine de votre site.
    La fonction realpath permet la conversion chemin relatif vers absolu.

    Si ça ne vous aide pas, il faudrait le message d'erreur, le code correspond et les chemins respectifs de chacun des fichiers.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 47
    Par défaut
    oui, c'est apparemment ce que je cherche.


    La première idée était ce concaténer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chemin = $_SERVER['DOCUMENT_ROOT']."chemin2/file" ;
    fopen($chemin,"a");
    mais cela ne marche pas, j'ai toujours l'erreur basedir restriction.

    Par contre faire un changement de répertoire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chdir($_SERVER['DOCUMENT_ROOT']);
    fopen("chemin2/file","a")
    semble marcher très bien et répond à mon besoin. En particulier le chemin variable de mon script ne me cause plus de souci.

    Je vous remercie donc Julp pour cette réponse claire et précise, et en général toute l'équipe pour votre intervention intéressante (y compris la petite modération)

    j'ai encore quelques vérifications à faire, laisser mon script tourner un peu "en production", aussi je laisse cette discussion ouverte quelques jours pour que chacun voie, avant de marquer "résolu"

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Dans la première solution, il manque éventuellement un séparateur de répertoire (/ qui passe partout sinon c'est normalement \ sous windows qu'il faut, suivant les cas, doubler puisque c'est le caractère d'échappement en PHP).

    Dans la deuxième et suivant votre version de PHP, vous avez potentiellement utilisé la "faille" connue à open_basedir. En effet, lorsque l'administrateur faisait mention du répertoire courant (.) au niveau de la configuration, avec les versions antérieures à PHP 4.4.5 et 5.2.0, on passait outre cette restriction par un changement préalable du répertoire courant (fonction chdir).

    Mais il faut prendre en compte la valeur de la directive open_basedir et le fichier que l'on veut manipuler. Vous n'avez pas donné de valeurs précises représentant votre cas mais si le fichier auquel on souhaite accéder ne correspond pas aux "préfixes" prédéterminés, vous n'y aurez pas accès de quelque manière que ce soit ("faille" exposée plus haut mise à part) : seul l'administrateur peut en modifier la valeur ou la désactiver depuis l'un des fichiers de configuration (Apache et/ou PHP).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide pour chemin dynamique XML
    Par biker64 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 24/10/2009, 19h58
  2. Réponses: 1
    Dernier message: 03/09/2009, 00h56
  3. Générer un chemin dynamique pour birt
    Par ahlem83 dans le forum BIRT
    Réponses: 5
    Dernier message: 21/07/2009, 14h08
  4. chemin dynamique d'un fichier
    Par MottetCCSF dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/12/2007, 13h10
  5. [Inno Setup] Chemins dynamiques
    Par Corpio dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 28/04/2006, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo