6
votes

Donner la permission d'écriture php à Apache

Je suis relativement nouveau pour configurer Apache.

J'ai un script php qui écrit un fichier JSON basé sur des valeurs extraites de $ _ obtenir code>. p> xxx Pré>

i Exécutez ce code en créant une demande XHR. p>

<Directory "~/Dropbox/Web">
    Options Indexes FollowSymLinks MultiViews

    AllowOverride None

    Order allow,deny
    Allow from all
</Directory>


4 commentaires

Qu'en est-il des autorisations Chmod du fichier / répertoire, il écrit?


Aucune très bonne idée de mettre un webfolder au dossier racine. Mettez-le à / var / www / comme les autres fichiers. Vous n'avez aucun problème avec les droits.


..chmod? Je n'ai aucune idée de ce que c'est. Peut-être que c'est ce qui me manque.


CHMOD est une fonction POSIX pour définir les autorisations de mode d'utilisation (mode Mod-Modifier CH-CHANGE). Si vous utilisez FTP, vous pouvez voir comment ils sont effectués.


5 Réponses :


13
votes

Vous devez vérifier si l'utilisateur sous lequel exécute Apache a la permission d'écrire dans le répertoire.

Donc c'est comme ça:

Votre serveur Apache est le processus. Le processus fonctionne sous certains utilisateurs (disons www). Le PHP fonctionne sous Apache. Donc, si vous essayez d'écrire dans un répertoire dans PHP, c'est la même chose que si l'utilisateur www se connecte au serveur et essaie de créer un fichier dans le même répertoire. Alors vérifiez qui est propriétaire de ce répertoire et quelle autorisation a-t-elle eu. Vous pouvez le faire par ex. via la commande ls -la . Si www sera propriétaire de ce répertoire, vous serez 100% sûr ...


3 commentaires

Il fonctionne sous la valeur par défaut _www. Donc, si je lui donne la permission, cela devrait fonctionner?


Chown www-Data: www-Data ~ / Dropbox / Web et Chmod 777 ~ / Dropbox / Web


S'il vous plaît ne pas chmod 777 quelque chose sur votre serveur Web face à la face publique.



1
votes

Vous pouvez essayer de définir les autorisations avec

chmod fonction pour PHP et définissez votre répertoire sur / var / www là-bas Vous avez normalement suffisamment d'autorisations.


0 commentaires

0
votes

Vérifiez que le fichier autorise soit dans la ligne de commande à l'aide de: xxx

ou via votre client FTP si vous avez un accès FTP au fichier / dir. Sinon, vous pouvez changer l'emplacement comme pierrone indiqué ci-dessus.


0 commentaires

0
votes

Vérifiez les autorisations de fichier / répertoire qu'il tente d'écrire à. Assurez-vous qu'il est écritable par l'utilisateur et / ou le groupe que le processus Apache est en marche comme.

Vérifiez également si SELINUX est activé en vérifiant le contenu de / selinux / appliquer. Si c'est le cas, désactivez-le ou assurez-vous que les étiquettes correctes sont définies sur le chemin que vous écrivez.


0 commentaires

0
votes

Sachez que parfois, il n'y a absolument aucun moyen de contourner cela en utilisant PHP uniquement.

Les deux solutions à cela sont:

  1. Configurer manuellement les autorisations PHP et Apache (AVERTISSEMENT: Peut être sale très rapidement).
  2. Utilisez FTP pour modifier la propriété à 0777 (accès complet), puis revenir après avoir exécuté les modifications.

    J'ai souvent trouvé cette dernière option pour travailler mieux.


0 commentaires