Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 05/09/2017, à 18:08

MopiVerte

débutante en php "Permission denied" [Résolu]

bonjour
je débute en php et sur ubuntu (je viens du mac)

Depuis le début de l'installation de mon ubuntu je rencontre des problème d'autorisation.
j'ai installé lampp.

je commence tout juste à utiliser du php

<?php
file_put_contents("post_form.log", "test"); // fichier existant, à l'endroit indiqué
?>

ceci affiche l'erreur suivante :
Warning: file_put_contents(post_form.log): failed to open stream: Permission denied in /opt/lampp/htdocs/sites/OCR/javascript/pagesWebDOM/javascript-web-srv/chap10_srv/test.php on line 2

mes fichiers de travail se trouvent dans le dossier : /opt/lampp/htdocs/sites
ses autorisations : 

drwxrwxrwx  8 mopiverte mopiverte  4096 août  26 15:07 sites

il me semble me souvenir d'avoir passé le dossier sites en chmod 777 afin de pouvoir créer des fichiers ^^
(sudo chmod -R 777 mondossier)
mais les autoristations à l'intérieur de ce dossier ne sont pas toutes identiques.
par exemple les fichiers concerné par le test php :

-rw-rw-r-- 1 mopiverte mopiverte   0 sept.  5 15:25 post_form.log
-rw-rw-r-- 1 mopiverte mopiverte  97 sept.  5 17:55 test.php

j'ai lu d'autre post, mais sans parvenir à mes fins. Il me semble comprendre que c'est un problème d'autorisation accordé au fichier qui s'execute par rapport à celui dans lequel il souhaite écrire.

Quelqu'un peut m'aider ?
je vous remercie par avance de votre indulgence

Dernière modification par MopiVerte (Le 18/09/2017, à 20:06)

Hors ligne

#2 Le 05/09/2017, à 19:48

Vobul

Re : débutante en php "Permission denied" [Résolu]

Salut,

Pour que PHP (et donc ton serveur web) puisse écrire dans un dossier, il faut que ce dossier soit own par l'utilisateur "www-data" (et le groupe www-data tankafaire).

Exemple si on se fait un dossier "logs"

mkdir /opt/lampp/htdocs/sites/logs
sudo chown www-data:www-data /opt/lampp/htdocs/sites/logs

Tu peux aussi faire "chmod 777" mais ça veut dire que tout le monde peut tout faire dessus, et c'est pas une bonne pratique, même si ça règle le soucis immédiatement.

Puis tu peux dire à PHP d'écrire dans ce dossier et ça devrait fonctionner.

Dernière modification par Vobul (Le 05/09/2017, à 19:49)


Vobul

Hors ligne

#3 Le 05/09/2017, à 20:48

MopiVerte

Re : débutante en php "Permission denied" [Résolu]

merci pour ta réponse Vobul
(merci pour l'explication du "www-data" je comprenais mal dans les autres post de forum que j'ai parcouru avant)

cependant ça ne marche toujours pas.
le dossier log m'est à présent verrouillé, je ne peux pas créer de nouveau fichier dedans
et le test.php ne peut toujours pas écrire dans log/post_form.log

peut-etre parce que c'est "moi" qui est créé le fichier post_form.log,
parce que meême dans le dossier log possédé par www-data,  drwxrwxr-x 2 www-data  www-data  4096 sept.  5 20:32 log
le fichier post_form.log est toujours possédé par moi ; -rw-rw-r-- 1 mopiverte mopiverte 0 sept.  5 15:25 post_form.log

petut-etre faut-il faire un chmod sur le dossier log, mais assez permissif quand meme et surtour "récursif" (si j'ai bien compris ce que récursif impliquait)

jai bien compris que chmod 777 n'étais pas une bonne pratique,
mais j'ai lu quelque part que c'était quand même la solution à mon probleme.
(à l'origine je ne pouvais pas créer de nouveau fichier dans le dossier sites)

par ailleurs j'aurais souhaité que php puisse écrire dans tout le dossier sites afin de pouvoir "travailler/m'entrainer" au développement web sans buter sans cesse sur ce problème.
Mais peut-eêtre que c'est un mauvais raccourci.

Dernière modification par MopiVerte (Le 18/09/2017, à 20:04)

Hors ligne

#4 Le 06/09/2017, à 13:57

soshy

Re : débutante en php "Permission denied" [Résolu]

les commandes chmod et chown s'appliquent uniquement aux fichiers / dossiers specifies par defaut.

Si tu voulais que tes fichiers de log, en plus du repertoire changent de proprietaire, il fallait indiquer que tu voulais que ce soit recursif pour tous fichiers et sous dossier du repertoire.

sudo chown www-data:www-data /opt/lampp/htdocs/sites/logs

Ne change les droits que pour le repertoire

sudo chown -R www-data:www-data /opt/lampp/htdocs/sites/logs

Change les droits pour le repertoire et tout ce qu'il contient.

Il en va de meme pour chmod

Dernière modification par soshy (Le 06/09/2017, à 13:58)

Hors ligne

#5 Le 06/09/2017, à 16:59

MopiVerte

Re : débutante en php "Permission denied" [Résolu]

merci Soshy,

j'ai utilisé la commande avec l'option récursive pour changer le propriétaire des fichiers contenu dans le dossier log.
Cependant lefichier .php ne pouvait toujours pas écrire dans le fichier .log
j'ai vérifié les paramètres d'autorisation du fichier .log :

-rw-rw-r-- 1 www-data www-data 0 sept.  5 15:25 post_form.log

donc, ok, www-data est bien propriétaire, mais je constate qu'il manque au propriétire le droit d'execution.

j'ai d'abord essayé : 

sudo chmod 751 -R /opt/lampp/htdocs/sites/log

mais sans succès.

j'ai fini par faire :

sudo chmod 777 -R /opt/lampp/htdocs/sites/log

et la forcément le fichier .php fonctionne et parvient à écrire dans le fichier .log
et... du coup le changement de propriétaire ne sert plus à rien.

mais manifestement ce n'est pas ce que j'aurais dû faire idéalement.
quelle est la bonne mise en place de ce dossier sites, qui sera donc amené à contenir touts mes sites, mais également fichiers d'apprentissage si un chmod 777 -R n'est pas la solution ?

Hors ligne

#6 Le 06/09/2017, à 17:23

MopiVerte

Re : débutante en php "Permission denied" [Résolu]

j'ai refait tout un tas d'essai.
mon fichier php ne peut fonctionner (=écrire dans le fichier .log) que si les autorisations du fichier sont --3, donc l'execution du fichier php n'est pas identifité comme l'utilisateur www-data
comment connaitre identifier l'authentification d'une requete php ?

Bref, je vais travailler avec les autorisations ouvertes au groupe "other" parce que j'ai pas de meilleure solution pour l'instant.
Merci pour votre aide.

Dernière modification par MopiVerte (Le 18/09/2017, à 20:04)

Hors ligne

#7 Le 06/09/2017, à 18:27

Vobul

Re : débutante en php "Permission denied" [Résolu]

Tu vas voir dans le fichier de conf lamp c'est quoi l'utilisateur. Il est possible que pour xampp/lampp ce soit différent de www-data qui est l'utilisateur lorsque tu installes apache normalement. Pour xampp t'as un fichier .ini dans le dossier xampp où il te met quel user/group il utilise pour apache.


Vobul

Hors ligne

#8 Le 18/09/2017, à 20:03

MopiVerte

Re : débutante en php "Permission denied" [Résolu]

merci Vobul,
Effectivement dans opt/lampp/properties.ini j'ai vu que le propriétaire d'apache est "daemon" et tout marche nettement mieux.
Donc j'ai fait :

sudo chown -R daemon:daemon /opt/lampp/htdocs/sites/log 
sudo chmod 754 -R /opt/lampp/htdocs/sites/log 

et le php test fonctionne, il écrit dans le fichier contenu dans le dossier log.

Seulement je ne peux pas le constater (ouvrir le fichier), étant considérée comme "other", donc j'ai remis en 777 pour plus de commodité (pouvoir vérifier le contenu de ce que j'écris via PHP).

J'ai fais des demi-progrès smile

merci pour votre aide

Hors ligne