web-dev-qa-db-fra.com

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

J'utilise 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.

Quand j'essaye d'exécuter le code suivant dans un de mes scripts 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, ni ailleurs sur mon ordinateur après la recherche. Le nom de fichier n'existe pas déjà et j'utilise Sudo nautilus parce que je ne dispose pas des autorisations nécessaires pour modifier les fichiers php à l'intérieur du /var/www/html. Pourquoi les fichiers n'apparaissent-ils pas dans mon dossier /var/www/html et comment puis-je résoudre ce problème pour que le fichier soit créé?

1
John Lee

Je viens de tester votre fichier php sur mon serveur et cela fonctionne très bien.

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

Si, en effet, cet utilisateur ne dispose pas des autorisations d'écriture sur ce dossier, des messages d'erreur apparaissent dans le fichier /var/log/Apache2/error.log.

Afin de regarder 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 dans /, il ne peut y avoir que root), le message d'erreur suivant apparaît 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 une autorisation en écriture à ce dossier pour l'utilisateur www-data.

donne à l'utilisateur la permission d'écrire dans un dossier avec la notation + w

4
hytromo