Birçok kullanıcı nginx + php-fpm kullanırken boş sayfalar için görüntülenen bir çözüm bulmayı beklerken bu iş parçacığına düşüyor , ben de bunlardan biri. Bu, cevapların çoğunu ve kendi araştırmalarımı (php7.2'ye güncellendi) okuduktan sonra ne yaptığımın bir özeti:
1) /etc/php/7.2/fpm/pool.d/www.conf
Parametrenin değerini açın ve kontrol edin listen
.
listen = /var/run/php/php7.2-fpm.sock
2) Parametre , site yapılandırma dosyanızdaki (i, e listen
:) fastcgi_pass
parametreyle eşleşmelidir /etc/nginx/sites-enabled/default
.
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
3) Dosyanın gerçekten var olup olmadığını kontrol edin:
$ file /var/run/php/php7.2-fpm.sock
/var/run/php/php7.2-fpm.sock: socket
4) Eğer mevcut değilse, php7.2-fpm çalışmıyor demektir, bu yüzden yeniden başlatmanız gerekir:
$ sudo /etc/init.d/php7.2-fpm restart
[ ok ] Restarting php7.2-fpm (via systemctl): php7.2-fpm.service.
Aşağıdaki location
bölümle ilgili olarak /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;
}
Dosyanın snippets/fastcgi-php.conf
konumda olduğunu kontrol edin /etc/nginx/
:
$ file /etc/nginx/snippets/fastcgi-php.conf
/etc/nginx/snippets/fastcgi-php.conf: ASCII text
Bu dosya php7.2-fpm için gereken değişken tanımlarının bir listesini içerir. Değişkenler doğrudan veya ayrı bir dosyanın dahil edilmesi yoluyla tanımlanır.
include fastcgi.conf;
Bu dosya şurada bulunur /etc/nginx/fastcgi.conf
ve şuna benzer:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
...
fastcgi_param REDIRECT_STATUS 200;
nginx iki olası parametre dosyası içerir: fastcgi_params ve fastcgi.conf . Her ikisi arasındaki fark, değişkenin tanımıdır SCRIPT_FILENAME
:
$ diff fastcgi_params fastcgi.conf
1a2
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Kısa bir hikaye yapmak için fastcgi.conf her zaman çalışmalıdır. Herhangi bir nedenden dolayı ayarladığınız fastcgi_params kullanıyorsanız , şunları tanımlamanız gerekir 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;
}
Şimdi nginx yapılandırmasını yeniden yükleyin:
$ sudo nginx -s reload
Ve bir php dosyasının doğru görüntülendiğini kontrol edin. Örneğin:
/var/www/html/test.php
<pre><?php var_export($_SERVER)?></pre>
/var/www/html
Belge köküne giden yol nerede .
Tüm bunlara rağmen, hala boş bir dosya görüyorsanız php.ini
, short_open_tag
etkinleştirdiğinizden emin olun (kısa etiketleri olan bir PHP sayfasını test ediyorsanız).