2016-08-27 1 views
1

Je suis en train de remplacer le contenu d'un fichier dans un autre dossier que mon dossier de fichier php, et je reçois une erreur: « Impossible de flux ouvert, Autorisation refusée »Comment mettre put_file_contents avec php sans erreur d'utilisateur?

J'utilise les put_file_contents fonction pour changer le contenu du fichier. J'ai recherché en ligne une solution à ce problème et ai trouvé que le répertoire de dossier est autorisé pour être écrit seulement par le propriétaire/utilisateur. J'ai vérifié les propriétés du répertoire dans filezilla (ftp), et j'ai trouvé que le répertoire n'était pas accessible en écriture par groupe ou public.

Dans filezilla, j'ai essayé de permettre au répertoire d'être écrit par public, et le fichier php était capable d'écrire dans le fichier du dossier.

Par conséquent, je pense que je peux facilement définir les autorisations sur le fichier uniquement, et non sur le répertoire, et facilement remplacer son contenu en définissant l'autorisation en écriture par le public. Bien que je ne comprends pas ce que les options propriétaire/groupe/public signifie? Parce que ceci est supposé être le serveur web d'un site hébergé sur un hôte de domaine payant, et je ne sais pas si l'option d'écriture publique est sûre ou non, ou pourquoi y aurait-il des groupes d'utilisateurs hébergeant un seul site web?

Étant donné que seul un fichier php peut modifier le contenu d'un serveur Web, pourquoi une option publique est-elle fournie pour un serveur Web? Si c'est pour les téléchargements, cela signifie aussi que la page de téléchargement réside sur le serveur! Je ne peux pas accéder au terminal sur ftp ou cpanel donc je ne peux pas exécuter chmod etc ...

S'il vous plaît quelqu'un pourrait fournir plus de détails concernant les risques de sécurité pour les fichiers avec des autorisations d'écriture publiques?

+0

Si votre site est hébergé sur un hébergement partagé, l'accès public peut poser de sérieux problèmes de sécurité. – Ahmad

+0

Il y a une raison pour laquelle vous n'êtes pas autorisé à le faire. Vous ne pouvez pas le résoudre en PHP, vous devez corriger le problème d'autorisations. –

+0

est-il un moyen de supprimer le fichier et l'écrire à nouveau avec des autorisations sur le fichier php à la place? – mk117

Répondre

0

Un serveur est toujours un ordinateur, comme l'un d'entre eux. Cela signifie que vous pouvez créer plusieurs utilisateurs, et que beaucoup de choses peuvent arriver.

Votre serveur ne restera pas nécessairement uniquement un serveur Web. Évidemment, c'est aussi un serveur FTP, et vous pouvez probablement y accéder en utilisant ssh. À l'avenir, vous voudrez peut-être l'utiliser à d'autres fins. Dans tous les cas, même si vous l'utilisez comme serveur Web, il est dangereux de définir l'autorisation d'un dossier comme accessible à tous les utilisateurs, en raison des risques de sécurité que votre code aura inévitablement. Il peut agir comme une sauvegarde: même si vous écrivez quelque chose de dangereux à l'avenir, il contient les dommages. C'est pourquoi, sur certains systèmes, le logiciel chargé de traiter les requêtes http (généralement Apache) s'exécute en tant qu'utilisateur spécifique httpd.

Les groupes d'utilisateurs correspondent exactement à ce qu'ils disent: groupes d'utilisateurs définis. Vous pouvez lire à ce sujet facilement en ligne.

+0

Salut Vic! Est-ce que [cette réponse] (http://stackoverflow.com/questions/2900690/how-do-i-give-php-write-access-to-a-directory) résout le problème d'autorisation de fichier? En outre, si je remplace le fichier après l'exécution du script (en réponse), les autorisations de fichier seraient-elles toujours accordées au script php? – mk117