Fopen, fwrite et droits linux

Bonjour.

J’ai un script php qui doit créer dans un repertoire prédéfini des fichiers .
Bien entendu sous linux le fichier ne se crée pas (sous windows ca marche)

Comment dois je m’y prendre dans le gestion des droits etc?
Si j’ai bien compris il faut évidement que le script ai le droit d’écrire dans le répertoire.
Mais quel est l’utilisateur utilisé par apache?

un ls- la de mon repertoire ou mon scrit doit ecrire donne ceci.

drwxr-xr-x 6 jerome root 4096 2007-10-08 23:28 geoloc

Merci d’avance.
Edité le 09/10/2007 à 21:34

Heu … pourquoi bien entendu il ne se créée pas ?


open(descripteur, O_CREAT) // (Pour créer)

et je pense que tu préfèreras un


open(descripteur, O_CREAT|O_WRONLY|O_APPEND);

Bref, avant de dire que “bien entendu” ça ne marche pas, RTFM : man fopen
Edité le 09/10/2007 à 16:11

C’est génant si je fais ceci?

 $fichier = fopen($nom_fichier, "w+");

Ou alors ce n’est que du cope pour windows cette syntaxe.

si j’utile ta syntaxe il n’y aura pas de problème de droit d’écriture sur le repertoire pour l’utilsateur d’apache?

En C ça ne poserait pas de problème, en php je ne sais pas.
Vérifie aussi les droits sur tout le chemin de ton répertoire (c’est à dire les droits des répertoires parents)

l’utlisateur apache:apache ou www-data:www-data (suivant la distrib) doit avoir les droits d’ecriture dans le rep en question…

Merci KP2 pour cette précision utile.

Par contre comment faire pour ajouter des droits d’écriture sur un répertoire pour un utilisateur bien particulier?

excuse moi de repondre par une question :

Qu’est ce que tu cherches a faire exactement comme appli ?

c’est bizarre de vouloir ecrire dans un rep utilisateur avec une appli web…
Faut pas s’amuser a changer les droits n’importe comment. Parfois, c’est simplement un petit souci de conception de l’appli qu’il faut regler. Et ca permet bien souvent d’ameliorer les choses aussi sous windows :wink:
Edité le 09/10/2007 à 20:05

man chmod

chmod u+w fichier => ajoute les droits en écriture pour le propriétaire
chmod g+w fichier => ajoute les droits en écriture pour le groupe
chmod o+w fichier => ajoute les droits en écriture pour les autres

Sinon, y a les ACLs qui se règlent avec la commande setfacl, mais bon, c’est pas forcément activé par défaut.

En réponse à une requête bien précise, le serveur stoque les résultat sous forme de csv qui est ensuite envoyé par mail en pièce jointe.
Et sinon je ne veux pas écrire dans un répertoire utilisateur mais dans var/www/geoloc (peux être est ce cela que tu appelles rep util, si c’est cela je m’en excuse).

Je viens de faire un

chown -R www-data /var/www/geoloc

et la le fichier se crée enfin sur le serveur.
Cependant j’aimerais que l’user jerome puisse avoir aussi ce droit la.

J’ai edité etc/group et j’ai fait ceci.

www-data:x:33:jerome

jerome deviens donc membre du groupe www-data ou je me trompe?

Une fois jerome dans le groupe www-data quel chown faire pour que tout les utilisateurs du groupe www-data puissent avoir les droits pour créer les fichiers?

Merci.

dans ton cas, ce que tu as fait est la bonne solution.
Mais il faut aussi modifier le groupe proprietaire du repertoire :

commande que tu aurais du lancer

commande que tu vas lancer pour modifier le groupe proprio du rep

puis

ou

Pour ton utilisateur jerome, tu as fait la bonne chose mais il vaut mieux eviter de tripoter le fichier passwd a la main et privilegier l’utilisation des commandes usermod, useradd et userdel

Sinon, je te conseille de lire la doc officielle de ta distrib sur ce probleme extremement basique qu’est la gestion des droits et des utilisateurs.
Edité le 09/10/2007 à 21:22

merci c’est tout bon