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 :

[Système] Création dossier-fichier : certains chemins impossibles


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut [Système] Création dossier-fichier : certains chemins impossibles
    Bon, voila le problème, c'est plus ou moins le même que celui de Ibtisss
    ref: http://www.developpez.net/forums/sho...eation+fichier

    Bon vu que le topic date un peu (histoire de dire que j'ai un minimum cherché avant de mettre ce message ), j'ai préféré en faire un nouveau.

    Bref, en gros voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    mkdir ("/tmp/toutou", 0755);
    $cible="/tmp/toutou/fichier.txt";
    $test=fopen($cible,'w+');
    $data='coucou';
    fputs($test,$data);
    fclose($test);
    Cherché pas, il ne contient pas d'erreur, la création du dossier/fichier est bon. Mais, (y'a toujours un mais ) quand on change de repertoire, plus rien ne fonctionne.
    Exemple, changer /tmp/toutou par /home/votrepseudo.
    Plus rien.

    J'aimerais juste comprendre ce qui se passe, et si c'est un problème de droit comment le résoudre, car j'aurais vraiment besoin de créer des fichiers dans autre chose que /tmp.

    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    effectivement ca doit etre un problème de droits (d'ailleurs, si t'as l'error reporting enabled, et les erreurs affichées, tu aurais du voir un "permission denied" qui traine)
    Si ton script est exécuté depuis un site web, c'est le user de ton serveur web qui va tenter de créer un dossier dans /home/pseudo, et de créer le fichier dedans. Il faut donc que tu donnes les droits à ce user pour écrire là.

    Et y'a plusieurs solutions pour arriver à ce résulat
    - chmod 777 sur le dossier, mais c'est très dangereux (tout le monde peut r/w/x)
    - utiliser les ACL (access control list), pour que tu restes owner de ton dossier, mais que apache puisse écrire dedans
    - ...
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  3. #3
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Points : 494
    Points
    494
    Par défaut
    J'ai exactement le même problème sur mon hébergement, la fonction fopen() n'arrive jamais à ouvrir un fichier en écriture dans certains répertoire. Ces répertoires sont pourtant en mod 777. La lecture marche parfaitement...

    Je n'ai pas obtenu de réponse pour cette question et la réponse m'intéresse également.

    cf http://www.developpez.net/forums/sho...d.php?t=141504
    Always code as if the guy maintaining your application is a violent psychopath!
    Site personnel sur la saga Final Fantasy : http://www.final-fantasy.ch

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    salut Lordsephiroth,
    je viens de lire ton topic, et je m'aperçois que tu as définie celui-ci en résolue, mais je vois pas la solution...

    bkill a ecrit:
    Si ton script est exécuté depuis un site web, c'est le user de ton serveur web qui va tenter de créer un dossier dans /home/pseudo, et de créer le fichier dedans. Il faut donc que tu donnes les droits à ce user pour écrire là.
    Oui, je veux bien mais je ne sais pas qui est réellement l'user de mon serveur? C'est peu être une question con , mais même en étant root, je ne parviens pas à créer ces foutu dossier.

    J'ai beau tenter des scripts avec la commande system, ça donne le même résultat.

    Même avec les dossiers en 777, ça ne fonctionne pas (je sais c'est pas très sécuritaire, mais c'était pour tester )
    Donc je vais réfléchier sur ces fameux ACL que je sais pas ce que sais.

    Je vous donne de mes nouvelles, mais n'hesitez pas non plus à me dire ce que vous avez tentez, ce qui marche, ce qui ne marche pas, ça peut aider.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    Oups!!!
    rectification, avec tous les dossiers à 777 ça fonctionne.
    J'avais oublié un sous-dossier.

    Bref, donc c'est sur c'est un problème de droit. (De toute façon je le savais dejà).
    Maintenant reste plus qu'à rectifié le problème.
    Je vais réfléchir au ACL. Mais si vous pouviez m'en dire plus ou directement me dire comment attibuer les droits à apache sur tel ou tel dossier, sachant que c'est dossier seront créer au fur et à mesure gràce à l'utilisation de php.

    Merci.

  6. #6
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Points : 494
    Points
    494
    Par défaut
    Citation Envoyé par fara morgana
    salut Lordsephiroth,
    je viens de lire ton topic, et je m'aperçois que tu as définie celui-ci en résolue, mais je vois pas la solution...
    En fait le "Résolu" voulais dire "j'ai trouvé une autre solution". J'ai pas eut de solution satisfaisante mais c'est pas vraiment grave, je m'intéresse juste à ta solution. Tu dis que c'est un problème de mod, j'avais pourtant tester avec le dossier en 777... (pas tout les dossier de l'arborescende, y en a bcp trop...)

    Faut-il que le dossier parent soit en 777?
    Always code as if the guy maintaining your application is a violent psychopath!
    Site personnel sur la saga Final Fantasy : http://www.final-fantasy.ch

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    salut,

    Faut-il que le dossier parent soit en 777?
    Non, ce n'est pas necéssaire, j'ai encore dit une connerie...
    Faut dire c'est un peu le bazar dans mes repertoires.

    Sinon, j'ai bien regarder les dossiers créés, c'est bien apache qui en est le propriètaire. Il suffit donc de donner les droits à apache sur les dossiers concernés.

    Le problème, je ne me souviens plus de la commande!!!
    Je sais que c'est un truc tout bête, mais impossible de m'en rappeller. J'ai pas vraiment envie de définir un nouveau topic dans la partie linux pour demander comment donner des droits à apache à certains dossiers. Je cherche encore...
    Si je trouve t'inquiète pas, je l'indiquerait après avoir tester cette fois.
    Je devrais pas en avoir pour longtemps...Enfin j'espère.

    Mais si quelqu'un le sait, il peut nous l'indiquer, ça serait sympa.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    Je suis un boulet!!
    2 min sur le net et c'est bon
    il faut faire un
    chown apache /dossier/dossier/fichier
    Ne pas oublier -R pour le récurssif
    ça devrait marcher!

    du moins je continue les tests et modifie le topic a résolu si c'est ça.
    Essaie et dis moi, Lordsephiroth.

Discussions similaires

  1. Réponses: 18
    Dernier message: 08/11/2011, 10h01
  2. Impossible de copier la date de création du fichier source
    Par azerazerazer dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/11/2007, 20h13
  3. Création de fichier et de dossier
    Par bouzaidi dans le forum C++
    Réponses: 12
    Dernier message: 24/07/2007, 23h58
  4. Réponses: 1
    Dernier message: 11/11/2006, 12h18
  5. Créer un tar.gz d'un dossier sans certains fichiers
    Par simoryl dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 26/10/2005, 12h42

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