web-dev-qa-db-fra.com

accès refusé sur nginx et php

Utilisation du serveur Web nginx et php. nginx fonctionne, je vois «Bienvenue à nginx! mais je reçois un 'accès refusé' lorsque j'essaie d'accéder à une page php. J'ai aussi installé php-fastcgi.

Voici mon conf par défaut nginx:

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
    root   /usr/share/nginx/html;
    fastcgi_index  index.php;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    include fastcgi_params;
   # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    include        fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
    deny  all;
}

J'ai activé security.limit_extensions = .php .php3 .php4 .php5 .html et listen = /var/run/php5-fpm.sock dans /etc/php-fpm.d/www.conf et cgi.fix_pathinfo = 0 dans /etc/php5/fpm/php.ini

J'ai redémarré nginx et php5-fpm.

Merci pour ton aide.

7
Hasan

Faites comme ceci où vous avez votre emplacement secondaire

location / {

        try_files $uri $uri/ =404;  

        root /path/to/your/www;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;

        fastcgi_param   PATH_INFO         $fastcgi_path_info;
            fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;

    }

Ces 2 paramètres sont la sauce magique:

fastcgi_param   PATH_INFO         $fastcgi_path_info;
fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
9
Pian0_M4n

Je connais certains scénarios possibles lorsque nginx et php ne peuvent pas accéder aux fichiers:

  1. Le processus php-fpm le plus probable est exécuté par un utilisateur qui n'a pas le droit de lecture sur les fichiers .php correspondants. Cela donne l'erreur simple Access denied.

  2. Le processus nginx ne dispose pas des autorisations de lecture et de cheminement sur le répertoire root contenant les fichiers de sites. Cela donne l'erreur 403 Forbidden.

  3. Le processus php-fpm ne peut pas parcourir le chemin absolu du répertoire root. Cela donne l'erreur File not found.

Puisque l'auteur mentionne, ce problème n'apparaît que lors de l'accès aux fichiers php, je dirais que le premier scénario s'applique ici.

Je crois que le cas est que nginx est exécuté en tant qu'utilisateur et php-fpm en tant qu'autre, seul l'utilisateur php-fpm a été oublié pour donner un accès en lecture.

1
liepumartins

Veuillez vérifier votre fichier fastcgi_params et le modifier en conséquence pour cet article https://askubuntu.com/questions/164627/nginx-php-fpm-access-denied-error

J'ai résolu mon problème en utilisant la méthode ci-dessus.

1
Xianlin

Si vous essayez d'utiliser NGINX pour analyser HTML en tant que PHP et que vous obtenez une erreur Access denied, vous devez modifier le paramètre de configuration PHP.

Sur Ubuntu 16, le fichier à mettre à jour est au format /etc/php/7.0/fpm/pool.d/www.conf.

Aller à la ligne où il est écrit ;security.limit_extensions = .php .php3 .php4 .php5 .php7

Remplacez-le par ce security.limit_extensions = .php .html. Notez que le point-virgule a été supprimé.

Puis redémarrez PHP Sudo systemctl restart php7.0-fpm. Le problème devrait être corrigé.

Pour plus d'informations, consultez ce guide plus détaillé: Correction de l'erreur "accès refusé" lors de l'analyse HTML en tant que PHP avec Nginx

0
Obinwanne Hill