1 votes

Impossible de créer un fichier dans /var/www/html

Je tourne sous Ubuntu version 14.04, et j'ai un serveur Apache2 configuré pour héberger des fichiers php sur localhost qui sont stockés dans /var/www/html .

Lorsque j'essaie d'exécuter le code suivant dans un de mes script php

<?php
$file = fopen("test.txt","w");
fwrite($file,"Hello World. Testing!");
fclose($file);
?>

Je ne trouve pas de fichier stocké dans mon /var/www/html nommé test.txt, ou n'importe où sur mon ordinateur après recherche. Le nom du fichier n'existe pas encore, et j'utilise le logiciel sudo nautilus parce que je n'ai pas les permissions nécessaires pour éditer les fichiers php à l'intérieur du fichier /var/www/html . Pourquoi les fichiers n'apparaissent-ils pas dans mon /var/www/html et comment puis-je résoudre ce problème pour que le fichier soit créé ?

5voto

hytromo Points 4759

Je viens de tester votre fichier php sur mon serveur et il fonctionne parfaitement.

Votre problème doit être que l'utilisateur www-data n'a pas les droits d'écriture sur ce dossier.

Si cet utilisateur n'a pas les droits d'écriture sur ce dossier, vous verrez des messages d'erreur dans le fichier /var/log/apache2/error.log

Pour consulter les dernières erreurs, faites

tail -n 15 /var/log/apache2/error.log

Par exemple, si, au lieu de "test.txt", je mets "/test.txt" (écrire sur /, où seul root peut le faire), j'obtiens cette erreur dans le fichier journal :

[:error] [pid 7505] [client 127.0.0.1:47066] PHP Warning:  fopen(/test.txt): failed to open stream: Permission denied in /var/www/html/a.php on line 2

Ce qui précède indique clairement que l'autorisation est refusée.

Vous pouvez résoudre ce problème en accordant à l'utilisateur l'autorisation d'écrire dans ce dossier. www-data .

donner à un utilisateur spécifique l'autorisation d'écrire dans un dossier en utilisant la notation +w

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X