J'aimerais obtenir des réponses ou des suggestions pour résoudre mon problème.
Je reçois donc une simple erreur :
2014/02/16 12:01:43 [error] 7384#0 : *1 FastCGI envoyé dans stderr : "Primary script unknown" pendant la lecture de l'en-tête de réponse depuis upstream, client : 127.0.0.1, serveur : localhost, requête : "GET / HTTP/1.1", amont : "fastcgi://unix:/var/run/php-fpm.sock :", host : "localhost"
Tout d'abord, ma configuration de nginx est bien faite (pour moi - c'est-à-dire qu'elle fonctionne bien). Le seul problème que j'ai est celui des permissions linux sur les fichiers/dossiers. Je n'arrive pas à comprendre la situation dans laquelle je me trouve. Ok, voici donc quelques informations nécessaires :
- mon nginx fonctionne bien, avec PHP et mysql configurés.
- un utilisateur utilisé pour nginx est nommé " nginx "
- index index.php index.html index.htm (configuration de nginx pour la directive index)
Voici mon problème :
J'ai un arbre comme ça : /home/user/
home dir est : racine:racine con 755
Le répertoire de l'utilisateur est : utilisateur:utilisateur con 700
J'ai créé un fichier nommé index.php en /home/user/index.php . Nginx dit (/var/log/nginx/error.log) que je n'ai pas de permissions. Ok, j'ai fait " usermod -a nginx -G utilisateur "et changé les permissions pour " utilisateur " dir à : 750 (donc maintenant nginx appartient au groupe de l'utilisateur, et peut lire ou exécuter le contenu du répertoire de l'utilisateur). Ok, cela fonctionne mais pas à 100%. Si je crée maintenant un fichier index.html ou index.htm - nginx fonctionne dans un navigateur ! wow ! ouais maintenant je veux créer index.php pour écrire du code. Boom ! Le fichier n'a pas été trouvé. Hmmm, c'est vraiment intéressant pour moi, qu'est-ce que j'ai fait de mal ? Le fait intéressant est que, si je change les permissions du répertoire de l'utilisateur en : 755 (de 750 ), nginx voit index.php . Si je comprends bien, nginx passe d'abord par le " o Les permissions " en /home dir ( r-x ). Ensuite, il doit aller dans " utilisateur "et comme l'utilisateur de nginx fait partie du groupe des utilisateurs, nginx peut passer à l'étape suivante en utilisant " g permissions " ( utilisateur/ dir permissions) pour entrer. Mais ce qui fait que nginx ne peut pas voir index.php (et voit index.html et .htm) ?
Ok, peut-être que mes connaissances ont des failles, mais je dois demander, pourquoi cela arrive-t-il ?
0 votes
Cela ne m'est jamais arrivé. J'ai dans nginx.conf :
user www-data;
Le propriétaire du fichier est MyNonRootUser et le groupe est www-data, tout fonctionne bien. Cependant, je vous suggère d'utiliser ip sock au lieu de php-fpm.sock :)0 votes
Votre message d'erreur n'est pas un problème de permissions . Affichez votre
server
bloc.0 votes
@WigglerJtag un socket UNIX est plus sûr et plus rapide que n'importe quel socket IP.
0 votes
@MichaelHampton c'est le cas, car si vous relisez sa question, vous remarquerez que nginx et php-fpm sont capables de servir
index.php
si les permissions sont définies sur755
(lecture autorisée pour le reste du monde, qui est php-fpm). Voir ma réponse.0 votes
@Fleshgrinder C'est vrai, j'ai eu quelques problèmes avec les sockets unix, mais peut-être que ce n'était que mon problème, parce que linux n'était pas au point. Je vais essayer de revenir à unix socket et voir si c'est mieux que TCP/IP.
0 votes
Edit : Mais je pense que j'ai eu des problèmes de stabilité sous unix socket, c'est pourquoi je suis passé à un TCP/IP plus lent.
0 votes
Je n'ai jamais eu de problèmes de stabilité avec les sockets UNIX. Essayez à nouveau et faites-moi savoir quel problème spécifique vous rencontrez. En général, c'est beaucoup mieux que les sockets TCP/IP et je les préfère à cause de la meilleure sécurité.