Comment donner à PHP l'autorisation d'écriture sur un répertoire ?
P粉512363233
2023-08-27 15:25:11
<p>J'essaie de créer un fichier en utilisant PHP mais cela ne fonctionne pas. Je suppose que c'est parce qu'il n'a pas d'accès en écriture (ce problème a déjà eu lieu). J'ai essayé de tester si c'était le problème en chmod 0777 le dossier, mais cela a fini par amener chaque script de ce répertoire à renvoyer un message d'erreur 500 jusqu'à ce que je le modifie à nouveau.
Comment puis-je donner à PHP un accès en écriture à mon système de fichiers afin qu'il puisse créer des fichiers ? </p>
<p>EDIT : il est hébergé sur l'hébergement partagé Hostgator à l'aide d'Apache. </p>
<p>Edit 2 : quelqu'un a posé des questions sur le code :
Le code est un script d'image GD. Je sais que le reste fonctionne comme avant lorsque je créais l'image à chaque fois que je l'appelais. Maintenant, j'essaie de les créer lors de l'ajout d'un nouveau texte et de les enregistrer dans un dossier. Ma ligne d'écriture est :
imagejpeg(null,$file,85);</p>
<p>J'ai également créé un fichier de test pour vérifier s'il ne s'agissait que d'un script cassé (principalement copié depuis tizag) :
http://gearboxshow.info/rkr/lesig.jpg/testfile.txt (Je ne sais pas si/comment publier le code ici correctement. C'est le contenu du script PHP, moins les balises PHP.) < /p>
<p> Il renvoie 13,13,1 (lignes séparées), donc on dirait qu'il pense avoir écrit quelque chose, mais le testfile.txt est vide (j'en ai téléchargé un vide) ou n'existe pas (si je supprime il)). </p>
<p>Edit 3 : Le serveur exécute CentOS. </p>
Une solution simple en trois étapes
Étape 1 : Identifier l'utilisateur PHP
Créez un fichier PHP avec le contenu suivant :
Téléchargez-le sur votre serveur Web. Le résultat devrait ressembler à ce qui suit :
Donc, les utilisateurs PHP le sont
www-data
.Étape 2 : Déterminer le propriétaire de l'annuaire
Ensuite, vérifiez les détails du répertoire web via la ligne de commande :
Le résultat devrait ressembler à ce qui suit :
Par conséquent, le propriétaire de cet annuaire est
exampleuser1
.Étape 3 : Changer le propriétaire du répertoire en utilisateur PHP
Ensuite, remplacez le propriétaire du répertoire Web par l'utilisateur PHP :
Vérifiez que le propriétaire de l'annuaire web a changé :
Le résultat devrait ressembler à ce qui suit :
À ce stade, le propriétaire de
example-folder
a été remplacé avec succès par l'utilisateur PHP :example-folder
的所有者已成功更改为 PHP 用户:www-data
.Fait ! PHP devrait maintenant pouvoir écrire dans le répertoire.
Un moyen simple consiste à laisser PHP créer d’abord le répertoire lui-même.
Cela vous évite des problèmes avec les autorisations.