PHPの画面が真っ白に表示される、しかもソース丸見え

色々な要因はあるけど、「PHPのページの画面が真っ白で表示される」という状況に遭遇。

他人がセットアップしたWebサーバにて、後からPHPが動作するようにPHP関連パッケージを追加したものの、PHPが動作しないという経緯。

AlmaLinux8で起こったことだけど、php-fpmで動作するAlmaLinux9やRockyLinuxなどでも同様。

症状としては、以下の通り。

  • httpdアクセスログに *.php へのアクセスは記録される。
  • httpdのエラーログには何も記録されない。(LogLevelをdebugまで上げても、それらしいログは出ない)
  • phpinfoやechoだけのページへアクセスすると、真っ白になる。
  • Webブラウザでソースを開くと、PHPソースが丸見え。
  • PHPのエラーレベルを上げても何も出力されない。
  • サーバ上にて、コマンドではPHPが動作する。


コマンドではPHPが動作することから、Webサーバ関連の設定を疑う。
このWebサーバ、メモリを節約するために色々なモジュールがオフになっているとのことで、
設定を見て回ると、proxy関係のモジュールが無効化(コメントアウト)されているのを発見。

/etc/httpd/conf.modules.d/00-proxy.conf
にて、以下の2つを有効化すれば良い。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so


これらのモジュールが必要な理由としては、
httpdが /etc/httpd/conf.d/php.conf で次のようにPHPを呼び出していることが該当する。

    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>

ここに設定されている通り、httpdがproxyモジュールを経てphp-fpmへ処理を渡している。
proxyモジュールを無効化してしまうと、php-fpmへ処理を渡せず、そもそもPHPhttpd経由で動作しない。