Apache autorisations, les fichiers PHP de créer, MKDir échouer
Il semble que je ne peut pas créer de fichiers. Lorsque j'ai mis les permissions à 777 Sur le dossier que je suis en train de créer un dossier dans le script fonctionne très bien. Si le dossier est mis à 755, elle échoue. Je ne sais pas beaucoup au sujet de linux, mais je suis supposé comprendre tout ça. J'ai passé quelques heures à essayer des trucs. Personne ne sait comment faire en sorte qu'apache ait assez élevé d'autorisations.
Je sais que c'est une des autorisations et apache problème, je ne sais pas comment résoudre ce problème. J'ai édité le httpd.fichier conf, mais je ne sais vraiment pas ce que je fais... Toute aide? (Je sauvegarde.)
- Avez-vous essayé avec 771 ? Qui est le propriétaire (utilisateur & group) de ce dossier ?
- computerhope.com/unix/uchmod.htm
InformationsquelleAutor Michael | 2011-03-02
Vous devez vous connecter pour publier un commentaire.
Veuillez arrêter ce qui suggère d'utiliser 777. Vous créez votre fichier accessible en écriture par tout le monde, ce qui signifie en gros que vous perdez tous les services de sécurité que le système d'autorisation a été conçu pour. Si vous le suggérez, pensez aux conséquences que cela peut avoir sur un mal configuré le serveur web: il serait devenu incroyablement facile à pirater le site, en écrasant les fichiers. Donc, ne pas.
Michael: il y a un parfaitement viable, pourquoi le script ne peut pas créer le répertoire, l'utilisateur qui exécute PHP (qui peut être différente de Apache), il suffit de ne pas les autorisations suffisantes pour le faire. Au lieu de changer les permissions, je pense que vous devriez résoudre le problème sous-jacent, qui signifie que vos fichiers ont le mauvais propriétaire, ou Apache ou PHP est en cours d'exécution en vertu de l'utilisateur incorrect.
Maintenant, il semble que vous avez votre propre serveur installé. Vous pouvez déterminer quel utilisateur est en cours d'exécution de PHP par l'exécution d'un script simple qui appelle la 'whoami' programme installé dans la plupart des linuxes:
Si tout va bien, vous devriez voir le nom d'utilisateur de PHP est en cours d'exécution en vertu de l'. Selon votre système d'exploitation, cela pourrait être le 'www-data', 'personne', 'http', ou toute variation. Si votre site est le seul site à courir, c'est facile à changer en changeant l'utilisateur Apache s'exécute sous. Si vous avez Debian, comme j'ai tendance à, vous pouvez éditer le fichier /etc/apache2/envvars (en tant que root), et changer la valeur de APACHE_RUN_USER. Selon votre système d'exploitation, cette variable peut être définie dans un fichier de configuration différent, donc si vous ne pouvez pas le trouver dans /etc/apache2/envvars, essayez de rechercher pour la déclaration de la variable à l'aide de:
À partir de l'annuaire de tous les apache-fichiers de configuration sont dans.
Si vous n'êtes pas le seul sur le serveur, vous pourriez envisager de créer des comptes d'utilisateur pour chaque site web, et d'utiliser quelque chose comme Apache2-MPM-ITK pour changer le RUN_USER selon le site web est appelé. Aussi, assurez-vous que l'utilisateur le processus PHP est en cours d'exécution est le propriétaire des fichiers et les répertoires. Vous pouvez accomplir cela en utilisant chown:
Si PHP est en cours d'exécution avec l'utilisateur, et est le propriétaire des fichiers et répertoires dont il a besoin pour écrire, l'autorisation de 700 suffit. J'ai tendance à utiliser 750 pour la plupart des fichiers moi-même bien que, comme je l'ai généralement de plusieurs utilisateurs dans ce groupe, et ils peuvent avoir de la lecture des autorisations. Donc, vous pouvez modifier les autorisations:
Qui doit l'être. Si vous rencontrez des problèmes, faites-nous savoir, et s'il vous plaît ne pas jamais prendre les conseils qui dit essentiellement à vous: si la sécurité est de vous déranger, enlever la sécurité.
J'ai un problème similaire, mais dans mon cas, j'ai SELinux en marche et il a échoué, même avec 0777 autorisation. S'avère que j'ai besoin explicitement autoriser httpd à avoir l'accès en écriture sur le répertoire à l'aide de:
SELinux utilitaire de résolution des problèmes peut avoir plus de détails.
Sur ubuntu, vous éditez le fichier /etc/apache2/envvars comme Berry.
Lorsque vous modifiez l'utilisateur Apache, méfiez-vous des conséquences inattendues. L'un d'eux est que les sessions PHP qui peuvent être stockées dans /var/lib/php5. Vous devrez peut-être modifier la propriété de ce dossier trop.
chown www-data /var/lib/php5
aidé, après tous les autres autorisations de fichiers et dossiers ont été dans l'ordre (et sain), mais le CMS gardé de se plaindre. Je vous remercie.L'utilisateur php (www-data, php, apache, quel qu'il soit) doit disposer d'autorisations en écriture sur le 755 dir. Je suppose que ce n'est pas un membre du groupe de l'auteur du dossier ou bien, il serait capable de l'écrire. Ajouter le php utilisateur au groupe ou de modifier les autorisations sur le dossier en 777. Si ni est une option, vous pouvez utiliser le PECL SSH2 extension connecter avec un utilisateur qui est dans le groupe (ou le propriétaire du fichier) et de créer les fichiers à la place.