web-dev-qa-db-fra.com

Impossible d'obtenir que nginx exécute php sur le serveur Ubuntu 16.04

Modifier.
La question a déjà obtenu une réponse ici: https://serverfault.com/questions/889334/cant-get-nginx-to-run-php-on-ubuntu-16-04-server

Je suis en train de configurer un serveur exécutant nginx et j'essaie de le faire exécuter des scripts php.

Apparemment, le meilleur article sur la façon de faire fonctionner php avec nginx est le suivant: https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp- stack-in-ubuntu-16-04

La discussion qui suit se termine alors que les autres directions sont vieillies.
Quel est le moyen le plus simple d'activer PHP sur nginx?

Je vais par les instructions sur le site Web de Digital Ocean, mais rien ne change, je ne peux toujours pas courir php.

Je suis tout à fait perdu dans cela et toute aide serait appréciée.

Voici le résultat de Sudo service nginx status:

nginx.service - A high performance web server and a reverse proxy server     
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2017-12-17 13:46:33 GMT; 55min ago
Process: 19056 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 19091 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)    
Process: 19064 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 19059 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 19066 (nginx)
Tasks: 2
Memory: 4.6M

CPU: 406ms
CGroup: /system.slice/nginx.service
       ├─19066 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
       └─19094 nginx: worker process                           

Dec 17 13:46:33 websites systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 17 13:46:33 websites systemd[1]: Started A high performance web server and a reverse proxy server.
Dec 17 13:48:53 websites systemd[1]: Reloading A high performance web server and a reverse proxy server.
Dec 17 13:48:53 websites systemd[1]: Reloaded A high performance web server and a reverse proxy server.

Voici le résultat de php -v:

PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.22-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by      Zend Technologies

Et voici le fichier de configuration que j'utilise.

Son à /etc/nginx/conf.d/virtual_servers.conf.

server {
    listen 80; 
    server_name openage.org www.openage.org;
    #listen [::]:80 default_server ipv6only=on;

    #root /usr/share/nginx/html;
    root /etc/nginx/html/openage;
    index index.php index.html index.htm;

    #server_name localhost;

    location / { 
        try_files $uri $uri/ =404;
    }   

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }   

    location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }   

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/openage.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/openage.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

J'ai déjà:

  • redémarré php-fpm.
  • redémarré nginx.
  • force rechargé le cache du navigateur avec ctrl-f5.
  • vérifié/var/log/error pour les erreurs mais il n'y a apparemment aucune erreur pour quand je lance le fichier php. C'est comme si nginx ne réalisait tout simplement pas qu'il était supposé exécuter le php au lieu de le traiter comme un fichier normal.

J'essaie d'exécuter un script contenant uniquement la fonction phpinfo(). Mais au lieu de me donner les informations php, le navigateur me propose simplement de télécharger le fichier. /:

8
Hermann Ingjaldsson

Ouvrez terminal et exécutez la commande suivante:

gksu gedit /etc/nginx/sites-available/default

cela ouvrira votre fichier de configuration nginx. éditez-le avec le texte suivant:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php7-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

après avoir sauvegardé le fichier, exécutez la commande suivante pour redémarrer nginx:

Sudo service nginx restart
2
MehrdadEP