Fichier introuvable lors de l'exécution de PHP avec Nginx
Récemment, j'ai installé la dernière version de Nginx et on dirait que je vais avoir dur de temps à l'exécution de PHP avec elle.
Voici le fichier de configuration que j'utilise pour le domaine:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
}
Voici l'erreur que je reçois sur le fichier journal des erreurs:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
- pourquoi fastcgi_pass avant les paramètres fastcgi ?
- Je ne sais pas, ce sont les de base de la config que j'ai eue lorsque j'ai d'abord installé Nginx.
- ne changer que les dernières modifications de la déclaration de quoi que ce soit?
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
pourquoi le mot/scripts
?- Pour moi, c'était le php-fpm.chaussette de fichier pointant vers l'ancienne version /run/php5.6/php-fpm.chaussette au lieu de /exécuter/php7.1/php-fpm.chaussette
Vous devez vous connecter pour publier un commentaire.
Essayez un autre *fastcgi_param* quelque chose comme
+1
si vous expliqué pourquoi cela se produit en premier lieu$document_root$fastcgi_script_name
semble être correcte autant que je sache, mais pourquoi?index.php
script fonctionne, mais encore404
état.J'ai eu le "fichier non trouvé" problème, j'ai donc déplacé la "racine" définition dans le "serveur" de support pour fournir une valeur par défaut pour tous les emplacements. Vous pouvez toujours la remplacer en donnant n'importe quel emplacement de sa propre racine.
Sinon, je pourrais avoir défini racine dans mes deux emplacements.
Sans doute il est trop tard pour répondre, mais un couple de choses car c'est vraiment une erreur gênante. Solution suivante travaillé sur Mac OS X Yosemite.
L'inclure avec fast cgi params devrait aller au-dessus de cette ligne.
Tous vos répertoires vers le fichier PHP que vous êtes en cours d'exécution (y compris le fichier en trop) doit avoir
a+x
autorisations, par exemplefastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
au-dessus de l'inclure a fait le tour pour moi sur Mac OS X de la Sierra.Dans mon cas, le script PHP lui-même retourné code 404. N'avait rien à voir avec nginx.
Dans mon cas, c'était parce que les autorisations sur la racine du répertoire web n'ont pas été définis correctement. Pour ce faire, vous devez être dans le dossier parent lorsque vous exécutez ceci dans le terminal:
Ce sera chmod tous les fichiers dans votre dossier html, ce qui n'est pas recommandé pour la production pour des raisons de sécurité, mais devrait vous permettre de voir les fichiers dans ce dossier, pour être sûr que ce n'est pas la question lors de la résolution.
Je viens de passer 40 minutes à essayer de déboguer un non-travail /statut:
Il juste de produire "Fichier non trouvé" par erreur, tandis que l'effectif des scripts (que l'on trouve sur le système de fichiers) a très bien fonctionné.
S'est avéré, j'ai eu un couple de processus orphelins de php5-fpm. Après j'ai tué tout et redémarré php5-fpm proprement, il est juste allé retour à la normale.
Espère que cette aide.
J'ai eu cette erreur ainsi. Dans mon cas, c'était parce qu'il y avait un autre hôte virtuel qui a été pointant vers le même répertoire racine.
Après la mise à niveau de PHP72, nous avons eu un problème où le php-fpm.d/www.conf perdu les paramètres d'utilisateur/de groupe qui a été la cause de cette erreur. Assurez-vous de vérifier ces si votre installation comporte php-fpm.
J'avais eu les mêmes problèmes,
Et lors de mes tests, j'ai fait face à deux problèmes:
1º: "Fichier non trouvé"
et
2º: page d'Erreur 404
Et je trouve que, dans mon cas:
J'ai eu à monter des volumes pour mes dossiers publics à la fois sur la Nginx volumes et le PHP volumes.
Si il est monté dans Nginx et n'est pas monté dans PHP, il va donner: "Fichier non trouvé"
Exemples (affiche "Fichier introuvable"):
Si il est monté dans PHP et n'est pas monté dans Nginx, il va donner une erreur 404 Page not Found.
Exemple (Va jeter Erreur 404 Page not Found):
Et ce serait très bien fonctionner (montage sur les deux côtés) (en Supposant que tout le reste est bien configuré et que vous êtes confrontés au même problème que moi):
Également ici un exemple de travail de projet à l'aide de Nginx/Php, pour servir plusieurs sites:
https://github.com/Pablo-Camara/simple-multi-site-docker-compose-nginx-alpine-php-fpm-alpine-https-ssl-certificates
J'espère que cela aide quelqu'un,
Et si quelqu'un en sait plus sur cette s'il vous plaît laissez-moi savoir,
Merci!
Pour moi, le problème était de la Faute de frappe dans le chemin de localisation.
Peut-être la première chose à vérifier pour ce genre de problème
Est le chemin d'accès au projet.
Lors de l'obtention de "Fichier non trouvé", mon problème est qu'il n'y a pas de lien symbolique dans le dossier où a été pointant cette ligne dans ngix config: