nginx+php-fpm の使用中に空白のページが表示される問題の解決策を期待して、多くのユーザーがこのスレッドに入ります。私もその 1 人です。これは、ここでの多くの回答に加えて、私自身の調査 (php7.2 に更新) を読んだ後に行ったことの要約です。
1) パラメータを開い/etc/php/7.2/fpm/pool.d/www.conf
て値を確認しますlisten
。
listen = /var/run/php/php7.2-fpm.sock
2) パラメーターは、サイト構成ファイル (つまり、: ) のパラメーターlisten
と一致する必要があります。fastcgi_pass
/etc/nginx/sites-enabled/default
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
3) ファイルが実際に存在することを確認します。
$ file /var/run/php/php7.2-fpm.sock
/var/run/php/php7.2-fpm.sock: socket
4) 存在しない場合は、php7.2-fpmが実行されていないことを意味するため、再起動する必要があります。
$ sudo /etc/init.d/php7.2-fpm restart
[ ok ] Restarting php7.2-fpm (via systemctl): php7.2-fpm.service.
location
のセクション
に関して/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;
}
次の場所にファイルsnippets/fastcgi-php.conf
が存在することを確認します/etc/nginx/
。
$ file /etc/nginx/snippets/fastcgi-php.conf
/etc/nginx/snippets/fastcgi-php.conf: ASCII text
このファイルには、php7.2-fpm で必要な変数定義のリストが含まれています。変数は、直接、または別のファイルのインクルードを通じて定義されます。
include fastcgi.conf;
このファイルは次の場所に/etc/nginx/fastcgi.conf
あります。
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
...
fastcgi_param REDIRECT_STATUS 200;
nginxには、 fastcgi_paramsとfastcgi.confの 2 つのパラメーター ファイルが含まれています。両者の違いは variable の定義ですSCRIPT_FILENAME
:
$ diff fastcgi_params fastcgi.conf
1a2
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
簡単に言うと、fastcgi.confは常に機能するはずです。何らかの理由でセットアップがfastcgi_paramsを使用している場合は、次を定義する必要があります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;
}
nginx の設定をリロードします。
$ sudo nginx -s reload
そして、phpファイルが正しく表示されることを確認してください。例えば:
/var/www/html/test.php
<pre><?php var_export($_SERVER)?></pre>
/var/www/html
ドキュメント ルートへのパスはどこにありますか。
それでも空のファイルが表示される場合は、有効になっphp.ini
ていることを確認してください (短いタグで PHP ページをテストしている場合)。short_open_tag