Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/01/2018, à 09:14

couik

[Résolu] Nginx 1.12 - PHP7.2

Bonjour,

Et bonne année à chacune et chacun.

Mon problème du jour : punaise de bazarre, ça ne fonctionne pas :S

Nature du problème :

  • Après ajout des dépôts pour avoir la dernier version stable de Nginx (1.12.2) et de php 7 (7.2), après installation (update et tout ça fait bien sûr)
    la configuration de Nginx pour les page html avec correction du fichier nginx.conf pour l'ouverture avec le user www-data et non nginx, tout va bien du coté nginx avec du html;
    Avec la console, php7.2 est opérationnel

    Mais... une fois suivi tous les tuto de partout (français et anglais), je me retrouve avec l'impossibilité f'afficher une page .php. les log montrent une erreur 404 alors que le fichier index.html est lui accessible...

Bon, pour avoir une aide efficace, une présentation des fichiers de config me parait indispensable...

  1. Répertoire défini de site web (en local)

    /usr/share/nginx/html
  2. Fichier /etc/nginx/nginx.conf

    user  www-data;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }

    Vous noterez user  www-data; sinon, Nginx n'a aucun droit sur les sockets

  3. je n'ai rien modifié au fichier /etc/php/7.2/fpm/pool.d/www.conf

    ; The address on which to accept FastCGI requests.
    ; Valid syntaxes are:
    ;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 addre$
    ;                            a specific port;
    ;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 addre$
    ;                            a specific port;
    ;   'port'                 - to listen on a TCP socket to all addresses
    ;                            (IPv6 and IPv4-mapped) on a specific port;
    ;   '/path/to/unix/socket' - to listen on a unix socket.
    ; Note: This value is mandatory.
    listen = /run/php/php7.2-fpm.sock

    Cela pointe bien sur le bon endroit :

    sylvain@SLB:~$ ls -l /run/php/
    total 4
    -rw-r--r-- 1 root     root     4 janv.  2 06:29 php7.2-fpm.pid
    srw-rw---- 1 www-data www-data 0 janv.  2 06:02 php7.2-fpm.sock
  4. Fichier /etc/nginx/conf.d/default

    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        # 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$ {
        #    fastcgi_pass   127.0.0.1:9000;
             fastcgi_pass   unix:/run/php/php7.2-fpm.sock;
             fastcgi_index  index.php;
             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;
        #}
    }
  5. Le fichier /var/log/php7.2-fpm.log est vide

  6. Extrait du fichier /var/log/nginx/access.log

    127.0.0.1 - - [02/Jan/2018:08:47:50 +0100] "GET /info.php HTTP/1.1" 404 27 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.97 Safari/537.36 Vivaldi/1.94.1008.40" "-"
  7. Extrait du fichier /var/log/nginx/error.log

    2018/01/02 08:47:40 [error] 7825#7825: *33 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.2-fpm.sock:", host: "127.0.0.1"
  8. Note compémentaire
    -> j'ai les même résultat avec pour paramettre non pas /run/php/... mais 127.0.0.1:9000
    -> le répertoire /usr/share/nginx/html et fichier sont avec www-data:www-data et avant avec root:root. Ce qui dans les deux cas donne le même résultat :S

je n'ai pas de données dont je risquerais de perdre. Donc je peux suivre tout conseil, mêm tout refaire sans soucis.

Par contre, je ne suis pas contre des pistes que je puisse comprendre...

Voilou

Merci beaucoup
Couik

PS : J'allais oublier : tout cela en local, mais sur le serveur dédier, j'ai fait la même chose, et le résultat est identique.
Dans mes hypothèses, soit un paramètre mal mis, soit un soucis de droit...

Dernière modification par couik (Le 02/01/2018, à 14:32)

Hors ligne

#2 Le 02/01/2018, à 14:29

couik

Re : [Résolu] Nginx 1.12 - PHP7.2

Rebonjour,

Réponse à moi même après avoir galérer dans toutes ces doc qui se contredisent ou pire comporte des erreur

Exemple :

  • J'installe MariaDB sans soucis, la dernière version.

  • (je vérifie la version selon le tuto

    mariadb --version

    Ce qui bien sûr ne fonctionne pas, puisqu'il faut utiliser :

    mysql --version

Il y a plein d'exemple comme celui là :S

Mais bon, revenons à nos moutons, ou du moins à mon serveur xD

l'erreur était de ne pas indiquer le chemin du script dans le block qui défini php

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    root /usr/share/nginx/html;         <= VOILÀ CE QU'IL FALLAIT METTRE   
    #    fastcgi_pass   127.0.0.1:9000;
         fastcgi_pass   unix:/run/php/php7.2-fpm.sock;
         fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         include        fastcgi_params;
    }

Voilou, tout est fonctionnel smile

Merci à moi même pour cette bonne réponse xD

Couik

Hors ligne

#3 Le 03/01/2018, à 15:36

krodelabestiole

Re : [Résolu] Nginx 1.12 - PHP7.2

couik a écrit :
  • (je vérifie la version selon le tuto

    mariadb --version

    Ce qui bien sûr ne fonctionne pas, puisqu'il faut utiliser :

    mysql --version

Il y a plein d'exemple comme celui là :S

quel tuto ?
si c'est sur la doc ubuntu ce serait bien de l'indiquer pour qu'on puisse corriger.

Hors ligne

#4 Le 03/01/2018, à 21:26

couik

Re : [Résolu] Nginx 1.12 - PHP7.2

Cela ne concerne pas Ubuntu-fr, même si beaucoup sont obsolètes.

=> https://www.linuxbabe.com/ubuntu/instal … untu-17-10

On notera que quelque soit la source de la doc, elle n'est que très rarement mis a jour.
Il faut donc avoir beaucoup de patience pour parvenir des fois à trouver une solution en mixant l'ensemble des doc, tuto etc...

Je pense que c'est lié à la passion de chacun au moment de faire une doc à jour à ce moment, avec son propre modèle en fonction de son propre environnement, mais qu'après, passion diminuant, les tuto et doc sont hélas délaissés.

Ce n'est pas propre à ubuntu-fr, mais à tous les sites sans exception, même professionnels

Voilou

Couik

Dernière modification par couik (Le 04/01/2018, à 01:01)

Hors ligne