web-dev-qa-db-fra.com

Comment donner à Apache la permission d'écrire dans le répertoire personnel?

Mon serveur est dans/var/www/html J'ai un script php dans /var/www/html/fileio_test/io_test.php 

<?php

$logging = <<< LOG
This is a test
LOG;

$testfile = fopen('/home/djameson/test.txt', 'a'); 
fwrite ($testfile, $logging);
fclose($testfile);

?>

Lorsque j'essaie d'exécuter ce script, je reçois 

Warning: fopen(/home/djameson/test.txt): failed to open stream: Permission denied in   /var/www/html/fileio_test/io_test.php on line 7

Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/fileio_test/io_test.php on line 8

Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/html/fileio_test/io_test.php on line 9

Comment puis-je laisser Apache écrire dans mon répertoire personnel? Le serveur fonctionne sur Fedora 20.

11
user3247608

En tant que votre fichier résidant dans votre répertoire personnel, je suggérerais l’une des approches suivantes.

  1. Donnez 0777 la permission de se déposer. 

    chmod 0777 /home/djameson/test.txt
    
  2. Changez la propriété en utilisateur Apache www-data et donnez l’autorisation en écriture au propriétaire.

    Sudo chown www-data:www-data /home/djameson/test.txt
    chmod 0744 /home/djameson/test.txt
    
  3. Ajoutez votre utilisateur au groupe www-data ou vice-verse ajoutez l'utilisateur www-data à votre groupe. Et puis la permission d'écriture du groupe.

    Sudo usermod -a -G www-data djameson
    chmod 0764 /home/djameson/test.txt
    

REMARQUE: Je suppose que le nom d'utilisateur et le nom du groupe Apache sont respectivement www-data et www-data. Vous devez modifier votre nom d'utilisateur/nom de groupe Apache en conséquence.

15
kuldeep.kamboj

Par défaut, Apache sur Ubuntu s'exécute en tant que www-data.

Supposons que votre dossier se trouve dans / var/www/mysite.

Tu peux le faire:

chown -R www-data:www-data /var/www/mysite

chmod -R og-r

/var/www/mysite Après cela, www-data (le serveur Web) aura accès complet aux fichiers du site, tandis que les autres utilisateurs non root auront pas d'accès du tout.

Si vous souhaitez autoriser certains utilisateurs à accéder au site, vous pouvez créer le dossier lisible par un groupe et ajoutez ces utilisateurs au groupe www-data.

Définissez les autorisations correctes sur vos fichiers Apache

9
Oskars Pakers

Pour que ce fichier soit lisible à la fois par l'utilisateur "djameson" et par le serveur Web, vous devez faire 4 choses:

  1. Ajoutez l'utilisateur utilisé par Apache (www-data sur la plupart des systèmes) à un groupe d'utilisateurs de votre système. Vous voudrez peut-être en créer un nouveau.
  2. Ajoutez également l'utilisateur "djameson" à ce groupe.
  3. Modifiez les autorisations de propriétaire (chown) du fichier afin qu'il soit détenu par l'utilisateur Django et le groupe que vous venez de configurer.
  4. Assurez-vous que les autorisations de fichier (chmod) permettent l’autorisation de lecture du groupe.
0
Flosi

si certains de vos fichiers se trouvent en dehors du répertoire www et que vous souhaitez fournir un accès à des fichiers hors de l'environnement Apache, vous pouvez utiliser chmod -R o + rx 

Ce qui précède donnerait à "d'autres utilisateurs (y compris l'utilisateur Apache)" la permission de lire/exécuter des fichiers

0
Utsav Popli