Muitos usuários se enquadram nesse segmento esperando encontrar uma solução para as páginas em branco serem exibidas ao usar nginx + php-fpm , sendo eu uma delas. Esta é uma recapitulação do que acabei fazendo depois de ler muitas das respostas aqui mais minhas próprias investigações (atualizadas no php7.2):
1) Abra /etc/php/7.2/fpm/pool.d/www.conf
e verifique o valor do parâmetro listen
.
listen = /var/run/php/php7.2-fpm.sock
2) O parâmetro listen
deve corresponder ao fastcgi_pass
parâmetro no arquivo de configuração do site (i, e /etc/nginx/sites-enabled/default
:).
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
3) Verifique se o arquivo realmente existe:
$ file /var/run/php/php7.2-fpm.sock
/var/run/php/php7.2-fpm.sock: socket
4) Se não existir, isso significa que o php7.2-fpm não está sendo executado, então você precisa reiniciá-lo:
$ sudo /etc/init.d/php7.2-fpm restart
[ ok ] Restarting php7.2-fpm (via systemctl): php7.2-fpm.service.
Com relação à location
seção em /etc/nginx/sites-enabled/default
:
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
Verifique se o arquivo snippets/fastcgi-php.conf
existe no local /etc/nginx/
:
$ file /etc/nginx/snippets/fastcgi-php.conf
/etc/nginx/snippets/fastcgi-php.conf: ASCII text
Este arquivo contém uma lista de definições de variáveis requeridas pelo php7.2-fpm. As variáveis são definidas diretamente ou através da inclusão de um arquivo separado.
include fastcgi.conf;
Este arquivo está localizado em /etc/nginx/fastcgi.conf
e se parece com:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
...
fastcgi_param REDIRECT_STATUS 200;
O nginx inclui dois arquivos de parâmetros possíveis: fastcgi_params e fastcgi.conf . A diferença entre ambos é a definição de variável SCRIPT_FILENAME
:
$ diff fastcgi_params fastcgi.conf
1a2
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Para resumir uma longa história, o fastcgi.conf deve sempre funcionar. Se, por algum motivo, você estiver configurado usando fastcgi_params , defina SCRIPT_FILENAME
:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Agora recarregue a configuração do nginx:
$ sudo nginx -s reload
E verifique se um arquivo php é exibido corretamente. Por exemplo:
/var/www/html/test.php
<pre><?php var_export($_SERVER)?></pre>
Onde /var/www/html
está o caminho para a raiz do documento.
Se, apesar de tudo isso, você ainda estiver vendo um arquivo em branco, verifique se o seu arquivo php.ini
foi short_open_tag
ativado (se você estiver testando uma página PHP com tags curtas).