Avant de crier DUPLICATE! et bannissez-moi dans l'abîme, écoutez-moi. :)
J'ai développé un site intranet pour l'entreprise avec laquelle je travaille, et à l'origine je le développais directement depuis mon poste de travail exécutant Windows 7/IIS. Comme j'ai presque terminé le site/les applications, on m'a donné une boîte Centos 7 qui s'exécute Apache, j'ai donc commencé le processus de migration vers celle-ci système. J'ai résolu la plupart des problèmes mineurs et ai fait fonctionner le site maintenant. Cependant, une partie du site interagit avec notre base de données et crée un répertoire/fichier journal basé sur la personne connectée. Cette partie utilise la fonction mkdir (), mais j'obtiens des problèmes d'autorisation avec.
mkdir(): Permission denied
Voici ce que j'ai déjà fait:
Donc, que j'utilise chmod ou chown pour modifier les autorisations pour les dossiers auxquels on accède, j'obtiens le même type d'erreur. Pour être sûr, j'ai vérifié l'utilisateur PHP également, et il utilise également l'utilisateur Apache.
Si quelqu'un peut avoir des informations supplémentaires sur les raisons pour lesquelles cela ne fonctionne pas, même avec les autorisations modifiées, veuillez m'éclairer. S'il m'arrivait de manquer le seul article qui expliquait cette situation particulière, alors criez en double et bannissez-moi dans l'abîme. lol :)
EDIT D'accord, donc lors de tests supplémentaires, j'ai découvert 2 problèmes qui semblent être à l'origine de ce problème global.
Juste pour noter, j'ai essayé de définir la valeur récursive sur true sur mkdir en PHP, mais c'est à ce moment-là que je reçois les problèmes d'autorisation initialement notés. Lorsque le mode récursif/est supprimé, il n'obtient pas le problème d'autorisation, mais il n'est pas en mesure de créer des répertoires imbriqués.
EDIT2
Pour tester mes théories, j'ai supprimé l'imbrication et essayé de faire en sorte que mkdir crée un seul répertoire, et cela génère les mêmes erreurs qu'auparavant. Bien qu'il soit la propriété d'Apache, et même si je le mets à 777, il repousse les problèmes d'autorisation.
Il se peut que bien que vous ayez les autorisations 755/777, SELinux empêche httpd d'écrire/créer des répertoires.
Essayer:
chcon -R -t httpd_sys_content_t /path/to/www
chcon -R -t httpd_sys_content_rw_t /path/to/www/dir/for/rw
Plus d'informations: http://wiki.centos.org/TipsAndTricks/SelinuxBooleans
Je ne sais pas, mais les binaires PHP de votre Centos peuvent avoir des autorisations de fichiers cassées. Il y a deux façons de résoudre ce problème.