Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/05/2006, 09h00   #1
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Par défaut Écriture fichier : problème de permissions (non trivial ?)

Bonjour.
J'ai un souci avec un fopen en mode "w", je récolte un "failed to open stream, permission denied" alors que j'ai toutes les permissions (si si, je vous assure !)

Je me demande si ça a un lien avec ce bug

Quelqu'un saurait m'aider ?
Merci d'avance
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 09h03   #2
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Ce n'est pas vraiment une réponse mais bon....

En essayant de l'ouvrir en r+ (ou w+) (ca ne devrai rien changer pour toi), ca te fait la même chose ?
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 09h11   #3
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par titoumimi
Ce n'est pas vraiment une réponse mais bon....

En essayant de l'ouvrir en r+ (ou w+) (ca ne devrai rien changer pour toi), ca te fait la même chose ?
En fait non, pas tout à fait : il n'y a plus de warning, mais apparemment le fichier n'est ouvert qu'en lecture, et je ne peux pas écrire. Il n'y a pas d'erreur pour le fwrite, mais il n'a aucun effet.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2006, 18h27   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Personne a une idée ? C'est quand même plus que troublant...
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h27   #5
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Je suis toujours en train de bosser sur ce problème... En fait un is_writeable sur le fichier me renvoie false, alors qu'il est en 777 !
Comment se fait-ce ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h30   #6
Membre expérimenté
 
Avatar de MatRem
 
Inscription : décembre 2002
Messages : 741
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 741
Points : 591
Points : 591
En fait les scripts php sont lancés avec l'utilisateur du serveur web.
En général sous apache, par défaut, c'est l'utilisateur apache.

Donc il faut que tu donnes des droits à cet utilisateur, ou que tu changes l'utilisateur du serveur (souvent dans /etc/htppd/conf/http.conf pour apache).
MatRem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h32   #7
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par MatRem
En fait les scripts php sont lancés avec l'utilisateur du serveur web.
En général sous apache, par défaut, c'est l'utilisateur apache.

Donc il faut que tu donnes des droits à cet utilisateur, ou que tu changes l'utilisateur du serveur (souvent dans /etc/htppd/conf/http.conf pour apache).
Je répète : les droits du fichier sont 0777. Tout le monde a tous les droits. Sinon je posterais pas...
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h33   #8
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
si il est en 777 tout le monde a les droits d'ecriture, donc c'est pas un probleme d'utilisateur.

A tout hasard, essaye de mettre 777 sur les droits du *dossier* qui contient le fichier en question. En principe ce n'est utile que pour la création et la suppression, mais on peut imaginer que la modification de fichier modifie une donnée du dossier (et donc heritage de droits en cascade) mais je dis p'tet n'importe quoi, c'est pure supposition... essaye quand meme ;o)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h49   #9
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Fladnag
A tout hasard, essaye de mettre 777 sur les droits du *dossier* qui contient le fichier en question. En principe ce n'est utile que pour la création et la suppression, mais on peut imaginer que la modification de fichier modifie une donnée du dossier (et donc heritage de droits en cascade) mais je dis p'tet n'importe quoi, c'est pure supposition... essaye quand meme ;o)
Merci du conseil, j'ai essayé, ça ne résoud rien (comme prévu )
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h56   #10
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Dans ce cas là, avant d'appeller un exorciste, essaye de supprimer ton fichier et de le recreer entierement avec php (droits 777 sur le répertoire cette fois ci necessaire ;o)

Pour faire ca tu peux faire un fichier php temporaire qui fait que ca ;o)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h57   #11
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Fladnag
Dans ce cas là, avant d'appeller un exorciste, essaye de supprimer ton fichier et de le recreer entierement avec php (droits 777 sur le répertoire cette fois ci necessaire ;o)

Pour faire ca tu peux faire un fichier php temporaire qui fait que ca ;o)
Déjà fait sans succès
Merci de l'idée.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h07   #12
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Si les solutions intelligentes marchent pas, c'est que la solution doit etre plus bete... donc :

* Est-ce que tu est sur que ton fichier est dans le meme repertoire (un p'tit coup de file_exists() avant c'est le mieux ;o)
* Est-ce que ton fichier contient des caracteres spéciaux (le mieux : alphanumerique uniquement + '.', pas d'espace ou autre)
* Est-ce que ton fichier n'est pas ouvert par une autre application en meme temps ?
* Est-ce que le dossier qui contient ton fichier n'est pas ouvert par un explorateur windows ?
* Est-ce que le probleme arrive sur d'autres fichiers ou seulement celui ci ? Et si oui, d'ou vient le probleme (repertoire, nom de fichier, contenu du fichier)
* fopen en mode b ou fopen en mode t ?
* c'est pas un raccourci (windows) ou un lien symbolique (linux) ?
* version de php ? safe mode activée ou non ?
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h16   #13
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Allons-y !

Citation:
Envoyé par Fladnag
Est-ce que tu est sur que ton fichier est dans le meme repertoire (un p'tit coup de file_exists() avant c'est le mieux ;o)
oui
Citation:
Envoyé par Fladnag
Est-ce que ton fichier contient des caracteres spéciaux (le mieux : alphanumerique uniquement + '.', pas d'espace ou autre)
non, que des chiffres
Citation:
Envoyé par Fladnag
Est-ce que ton fichier n'est pas ouvert par une autre application en meme temps ?
non
Citation:
Envoyé par Fladnag
Est-ce que le dossier qui contient ton fichier n'est pas ouvert par un explorateur windows ?
non
Citation:
Envoyé par Fladnag
Est-ce que le probleme arrive sur d'autres fichiers ou seulement celui ci ? Et si oui, d'ou vient le probleme (repertoire, nom de fichier, contenu du fichier)
j'ai essayé avec d'autres fichiers (créés pour l'occasion) avec la même méthode, ça ne marche pas non plus.
Citation:
Envoyé par Fladnag
fopen en mode b ou fopen en mode t ?
testé les deux, dans la version actuelle je ne force pas le mode.
Citation:
Envoyé par Fladnag
c'est pas un raccourci (windows) ou un lien symbolique (linux) ?
non
Citation:
Envoyé par Fladnag
version de php ? safe mode activée ou non ?
4.4.0, safe_mode off
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h20   #14
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Fladnag
Dans ce cas là, avant d'appeller un exorciste, essaye de supprimer ton fichier et de le recreer entierement avec php (droits 777 sur le répertoire cette fois ci necessaire ;o)
Rectification : je PENSAIS avoir fait ça.
J'essaie de faire un touch sur un nouveau fichier :

Warning: touch(): Unable to create file XXX because Read-only file system in XXX/tmp/create.php on line 3

curieux, non ?

Pour info, je sais pas si ça joue mais apache va chercher les fichiers à publier sur un montage NFS.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h27   #15
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Etrange en effet... mais au moins c'est plus coherent ;o)

peut etre le montage est il en read only, tu as encore des droits a ce niveau la il me semble. De plus, si le file system d'origine n'est pas nfs, il est possible qu'il ne sache pas ecrire sur les disques nfs, ca depend des drivers disponibles.
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h29   #16
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Fladnag
peut etre le montage est il en read only, tu as encore des droits a ce niveau la il me semble. De plus, si le file system d'origine n'est pas nfs, il est possible qu'il ne sache pas ecrire sur les disques nfs, ca depend des drivers disponibles.
Aïeuuuuu...
Ou est-ce que je peux aller voir sur ma machine unix les droits du montage NFS ? J'ai pas la main dessus, mais au moins je serai fixé !
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h39   #17
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Heu... en principe, sous une interface graphique, clic droit propriétés, tu as les droits du montage. mais bon... quand on utilise unix c'est pas pour utiliser une interface graphique ;o)

Donc eventuellement je dirais p'tet un p'tit "ls -al /dev" ? ou /mnt ? j'sais pô trop ;o)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h47   #18
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Fladnag
Heu... en principe, sous une interface graphique, clic droit propriétés, tu as les droits du montage. mais bon... quand on utilise unix c'est pas pour utiliser une interface graphique ;o)

Donc eventuellement je dirais p'tet un p'tit "ls -al /dev" ? ou /mnt ? j'sais pô trop ;o)
Quand j'accède à ces répertoires en NFS avec mon compte, j'ai bien les droits en écriture, je vois bien un 777 dans les permissions là où il doit être. Et je peux bien sûr créer des fichiers.
Est-ce que ça veut dire qu'apache devrait théoriquement pouvoir faire la même chose ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h59   #19
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
non, pas forcement... et en effet, rien ne dit que le montage soit accessible en ecriture pour apache. faudrait voir avec un admin reseau ou unix là, souvent les montages ont des droits différents selon les utilisateurs, toi tu voit du 777 mais peut etre que l'utilisateur php voit autre chose.
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 15h02   #20
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Fladnag
faudrait voir avec un admin reseau ou unix là
C'est bien ce que je craignais... Ben je crois que ça va être plus simple de demander l'ouverture d'une base MySQL pour stocker UN nombre, que d'avoir ces permissions
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h32.


 
 
 
 
Partenaires

Hébergement Web