2010-02-14 6 views
3

J'essaie de lancer le site PHP avec Apache sur Fedora et j'ai un problème à propos de l'écriture des autorisations. Il semble que Apache n'a pas d'autorisation d'écriture sur certains dossiers, mais je ne comprends pas pourquoi.Apache + PHP autorisations d'écriture sur unix

J'ai vérifié httpd.conf et il a un groupe: apache, utilisateur: apache. Je me suis alors fait: chown -R apache: apache www et 777 autorisations mis aux dossiers, mais il dit encore:

Attention: file_put_contents (/var/www/public/temp.txt) [fonction. file-put-contents]: échec de l'ouverture du flux: autorisation refusée dans /var/www/public/newtest.php à la ligne 8

Veuillez nous consulter. Btw, si je crée "php newtest.php" à partir de la ligne de commande, le fichier temp.txt est créé avec la racine du groupe et la racine de l'utilisateur. Cela ne fonctionne pas avec le navigateur.

+1

Qu'en est-il de la permission du fichier 'temp.txt'? –

+0

temp.txt est un nouveau fichier que je veux être créé, il n'existe pas encore –

Répondre

3

Avertissement: file_put_contents (/var/www/public/temp.txt) [function.file-mis-contenu]: failed to open stream: Permission denied en /var/www/public/newtest.php sur ligne 8

Il y a tellement de mauvaises choses ici. Commençons par le fait que vous voulez vraiment garder les fichiers inscriptibles httpd loin de votre code - certainement dans un répertoire séparé, de préférence en dehors de la racine du document.

chown -R apache: apache www et définir 777 autorisations aux dossiers

Et avez-vous vérifié par la suite ce que les autorisations étaient en fait? BTW voir aussi le point ci-dessus - si vous avez écrit tout votre site web par tout le monde, alors vous demandez simplement des ennuis. Vous ne devez certainement pas changer à la fois le propriétaire et les autorisations.

Avez-vous activé SELinux? (lancez sestatus en tant que root). Si c'est le cas, vous devez soit le désactiver, soit apprendre à le configurer, mais je vous recommande d'abord de vous familiariser avec les anciennes permissions, puis de désactiver SELinux.

C.

+0

Ok, je sais que 777 n'est pas le moyen de stocker des fichiers, mais pour résoudre le problème, j'ai dû tout essayer. J'ai désactivé SELinux maintenant. sestatus root affiche maintenant "SELinux status: disabled", mais le problème est toujours là :(Des idées? –

+0

Ah non, en fait ça a aidé, juste eu l'ancien fichier avec les permissions root ici. –

0

faire chmod 775 à newtest.php;)

+0

Comme je l'ai déjà mentionné, j'ai fait 777 à l'ensemble du dossier (y compris newtest.php bien sûr). temp.txt est un nouveau fichier que je veux créer, il n'existe pas encore. –

0

ls -la/var/www/publique

Juste pour vérifier :-)

+0

Ok, le dossier lui-même a ceci: drwxrwxrwx 8 publique apache apache 4096 2010-02-13 04:08 Le fichier J'exécution: -rwxrwxrwx 1 apache apache 213 2010-02-14 06:34 Newtest. php –

+0

Bizarre. Êtes-vous sûr que temp.txt n'est pas déjà là? En outre, que se passera-t-il si vous essayez "sudo -u apache echo test> /var/www/public/temp.txt"? – Qwerty

+0

oui, ce n'était pas là. Quand j'ai lancé la commande que vous avez suggérée (sous root), elle l'a créée, mais quand j'essaye à nouveau mon script PHP, il montre toujours la même erreur même si le fichier est là. Je suis certain qu'il a quelque chose à voir avec les permissions apache, mais je ne sais pas exactement quoi .. –

0

Avez-vous essayé de toucher temp.txt et juste changer file_put_contents() et ajouter l'indicateur FILE_APPEND?

+0

Toute opération de fichier donne une erreur de permission, peu importe ce que je fais: file_put_contents, fwrite, imagepng - tous donnent des erreurs similaires. touch a retourné ceci: Attention: touch() [fonction.touch]: Utime a échoué: Permission refusée dans /var/www/public/newtest.php sur la ligne 6 –

+0

Je voulais dire commande shell shell ... – f13o

+0

de toute façon ce n'est pas Aidez-moi. et je dois pouvoir créer des fichiers, pas seulement le modifier. –

0

Je vous recommande de changer apache pour mod_itk comme mpm et d'exécuter le vhost particulier avec les permissions du répertoire racine du document propriétaire et des scripts PHP.

+0

comment cela devrait-il aider avec mon problème? Je n'ai pas vraiment besoin de vhost ici .. –

+0

Dans Apache il y a au moins un vhost par défaut configuré habituellement. Vous voudrez probablement essayer de mettre le propriétaire de vhost là. Mais vous voudrez probablement aussi améliorer votre question parce que mod_itk est surpuissant dans les configurations à un seul vhost et je ne l'aurais pas suggéré alors. ;-) – hurikhan77