色々な要因はあるけど、「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へ処理を渡せず、そもそもPHPがhttpd経由で動作しない。