Titre: fichier txt en php sous fedora Posté par: romaindu86 le 15 Août 2010 à 10:21:39 Bonjour, j'ai un script qui créer un fichier texte sous windows cela marche très bien seulement sous ferdora impossible d'en créer un en php.J'ai donner les droit 0777 au dossier et même tester en les donnant aux dossier parent.Je ne vois pas d'ou vient le problème.
Code: $fp = fopen("monfichier.txt",'a+'); J'ai bien sur essayer en changeant "a+" en "a", "w"... Titre: Re : fichier txt en php sous fedora Posté par: _o_ le 15 Août 2010 à 10:59:47 J'ai donner les droit 0777 au dossier et même tester en les donnant aux dossier parent. Très super méga mauvaise idée. Le premier truc à faire est de revenir aux permissions de départ. Avant de bidouiller des permissions n'importe comment, on pose les choses : - sous quel utilisateur tourne Apache (ou qui exécute le script si ce n'est pas Apache) ? - quel est le propriétaire du répertoire dans lequel tu souhaites écrire, et quels sont ses droits ? - même question pour tous les répertoires parents. - qui doit pouvoir lire ce fichier après sa génération ? Et seulement à partir de ce moment là, on pose les bons propriétaires et permissions. Citation J'ai bien sur essayer en changeant "a+" en "a", "w"... Bon, mais quelle est l'erreur donnée par PHP ? S'il est fortement déconseillé d'activer l'affichage des erreurs sur un serveur en production, c'est par contre tout à fait utile à des fins de débogage. Titre: Re : fichier txt en php sous fedora Posté par: romaindu86 le 15 Août 2010 à 12:13:17 Je ne c'est pas comment autoriser l'affichage des erreur. le chemin qui mène jusqu'à mon répertoire est "/var/www/html/monscript.php".
Je me connecte avec un user :"romain" qui n'a pour l'ensemble de ces répertoire(qui appartiennent au root) que le droit de lecture.Le but du script "monscript.php" est juste de créer un fichier texte dans le même répertoire.De plus c'est le script lui même qui lira ce fichier texte par la suite enfin je teste avec un fichier texte mais ensuite se serra un fichier png,mon script récupère une image png et exécute une commande Linux qui lit le texte sur cette image. Titre: Re : fichier txt en php sous fedora Posté par: _o_ le 15 Août 2010 à 12:29:47 Il va falloir être un peu plus précis.
Le script est exécuté par Apache ou par php-client ? Dans le premier cas, pourquoi me parles-tu de l'utilisateur romain ? Et sous quelle identité fonctionne Apache ? Dans le deuxième cas, pourquoi mettre le script sous /var/www/html ? Et surtout, comment peux-tu être sûr que le fichier va être créé dans ce répertoire là, alors que tu ne précises pas le chemin en absolu dans ton fopen ? Il faut toujours se méfier de la notion de répertoire courant, très dépendante de l'environnement d'exécution. Titre: Re : fichier txt en php sous fedora Posté par: romaindu86 le 15 Août 2010 à 12:37:07 Citation Le script est exécuté par Apache ou par php-client ? par un client php : LAMPCitation dans le premier cas, pourquoi me parles-tu de l'utilisateur romain ? Car au lancement de fedora je me connecte sous l'utilisateur "romain" Citation Et sous quelle identité fonctionne Apache ? Désolé mes connaissance étant réduite sous linux je ne vois pas ce que cela veut direCitation Dans le deuxième cas, pourquoi mettre le script sous /var/www/html ? car avec LAMP les script doivent être placés dans ce répertoireCitation Et surtout, comment peux-tu être sûr que le fichier va être créé dans ce répertoire là, alors que tu ne précises pas le chemin en absolu dans ton fopen ? Car mon script php est citué dans ce même répertoireTitre: Re : Re : fichier txt en php sous fedora Posté par: _o_ le 15 Août 2010 à 14:04:53 C'est pas encore gagné. Plus simple : ton script, tu l'exécutes sur une ligne de commande ou dans un navigateur ?
On va faire l'hypothèse que c'est le navigateur, donc apache. Dans ce cas, on se fiche de l'utilisateur sous lequel tu te connectes. Pour connaître l'identité sous laquelle tourne Apache, le plus simple dans ton cas, tape la ligne de commande suivante et donne nous le résultat : Code: ps -eaf | egrep "(apache|httpd)" | grep -v grep Ensuite, quels sont les droits du répertoire : Code: ls -ld /var/www/html Titre: Re : fichier txt en php sous fedora Posté par: romaindu86 le 15 Août 2010 à 23:19:48 Citation -eaf | egrep "(apache|httpd)" | grep -v grep Code: [romain@hote ~]$ ps -eaf | egrep "(apache|httpd)" | grep -v grep Citation ls -ld /var/www/html Code: [romain@hote ~]$ ls -ld /var/www/html j'exécute mon script dans un navigateur.cela changrrais quelque chose que je l'exécute en ligne de commande? Titre: Re : Re : fichier txt en php sous fedora Posté par: _o_ le 16 Août 2010 à 07:33:41 Code: root 1603 1 0 02:14 ? 00:00:00 /usr/sbin/httpd Le process root est le maître, qui a la possibilité d'ouvrir le port 80 en écoute et gère les requêtes reçues vers ses fils. Ceux-ci fonctionnent sous l'identité apache, pour éviter les catastrophes en cas de faille. Code: drwxrwxrwx. 2 romain romain 4096 15 août 15:52 /var/www/html Ce n'est pas normal, que ce soit du point de vue des permissions comme du propriétaire. En toute logique, le propriétaire devrait être apache et seul lui devrait pouvoir modifier le contenu (voir même le lire si on est facho) : Code: chown -R apache:apache /var/www/html Attention, cela a pour conséquence qu'un utilisateur simple (dont romain) n'a plus le droit d'éditer les fichiers contenus dans le répertoire en question. Deux solutions possibles : - utiliser sudo pour éditer les fichiers. - utiliser le groupe en ajoutant l'utilisateur romain au groupe apache et donner les droits de modifications au groupe dans le répertoire (chmod -r g+w /var/www/html ). A partir de là, tu reviens à une situation correcte. Et si ça ne marche pas, il sera temps de voir, mais il vaut mieux éviter de bricoler les permissions. Je te conseille quand même de spécifier le nom du fichier en absolu dans ton fopen, et d'activer temporairement l'affichage des erreurs PHP pour débugger (Cf. la doc PHP pour ce dernier point). j'exécute mon script dans un navigateur.cela changrrais quelque chose que je l'exécute en ligne de commande? Oui, tu changerais l'environnement d'exécution (pas de contrainte sur le répertoire dans lequel mettre le script, exécution sous l'identité de l'utilisateur qui le lance, etc...). Cela nécessite un package particulier (par exemple php5-cli sous debian). Titre: Re : fichier txt en php sous fedora Posté par: romaindu86 le 16 Août 2010 à 10:45:52 Je te remercie pour toutes ces précisions le problème était bien en rapport avec les droits,je n'avais deja pas penser que en lançant mon script en ligne de commande l'utilisateur ne serrais plus le même,tout fonctionne parfaitement même en créent un groupe avec apache.Encore merci pour ce temps accordé à répondre à mes questions.
|