PHP
nginx
CentOS
php-fpm

CentOS7+Nginx+PHP(php-fpm)で真っ白な表示になった

Nginxを触ったことがなかったので、触ってみたらハマったのでメモ。

症状

といってもタイトル通り。
初期設定後にphpinfo()なファイルを作成して見ようとしたら真っ白で表示されなかった。

よくある例

fastcgi_paramの記述を間違えてPHPが動かないっていうのがよくあるパターンらしい。

/etc/nginx/conf.d/default.conf
location ~ \.php$ {
    root           /home/user/www;
    fastcgi_pass   127.0.0.1;
    fastcgi_index  index.php;
-   fastcgi_param  SCRIPT_FILENAME /scripts$fastcgi_script_name;
+   fastcgi_param  SCRIPT_FILENAME /document_root$fastcgi_script_name;
    include        fastcgi_params;
}

今回の例

テスト用にこのようなファイルを設置した。

info.php
<?
phpinfo()
?>

が、表示されなかった。Nginxの設定を何回も見直したが改善されない。

原因はNginxではなく、PHP側の設定にあった。

/etc/php.ini
- short_open_tag = OFF
+ short_open_tag = On

この設定はPHPのタグ(<?php ?>)の短縮形(<? ?>)を有効にするかどうかのもので、OFFの場合は<?php ?>のように明示する必要があるらしい。
今回作成したファイルでは明示されていなかったため、表示されなかった。

というかそもそも短縮タグを使わなければいい話なので設定を変える必要もなさそう。

参考サイト

phpinfoが真っ白で表示されない - monkey404
コア php.ini ディレクティブに関する説明 - PHPマニュアル