Não é possível obter o nginx para executar o php no servidor do Ubuntu 16.04

1

Estou configurando um servidor rodando nginx e estou tentando fazer com que ele rode scripts php.

Aparentemente, o melhor artigo sobre como obter o nginx para executar o php é este: link

A discussão a seguir termina com as outras direções sendo envelhecidas.
link

Eu vou pelas instruções no site do oceano digital, mas nada muda, eu ainda não consigo executar php.

Eu estou completamente perdido nisso e qualquer ajuda seria apreciada.

Aqui está a saída do status nginx do serviço sudo:

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.

Aqui está a saída do 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

E aqui está o arquivo de configuração que estou usando.
É em /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
}

Eu já:
-repetido php-fpm.
-iniciado nginx.
-force recarregou o cache do navegador com ctrl-f5.
-checked / var / log / erro de erros, mas aparentemente não há erros para quando eu executar o arquivo php. É como se o nginx não estivesse percebendo que deveria rodar o php ao invés de apenas tratá-lo como um arquivo normal.

Eu estou tentando executar um script contendo apenas a função phpinfo (). Mas em vez de me dar as informações do php, o navegador me oferece o download do arquivo. /:

O script que estou executando é o seguinte:

hello
<?php phpinfo(); ?>

E você pode ver isso em ação aqui: link . Como você pode ver, não há informações php.

    
por Hermann Ingjaldsson 22.12.2017 / 12:55

1 resposta

2

1º problema : você nomeou o arquivo index.html em vez de index.php .

Este bloco de localização location ~ \.php$ { está enviando qualquer coisa que termine em .php para php-fpm. Qualquer coisa que termine em .html nunca é enviada para php-fpm, então o código php incorporado não será executado.

2º problema : remova a diretiva try_files do bloco de localização do php.

try_files está dizendo ao nginx para procurar por esse arquivo e retornar 404 se ele não for encontrado antes de fazer proxy na solicitação para o php-fpm.

    
por 22.12.2017 / 15:26