【備忘録】WordPressのPHPコードがそのまま表示される問題の解決策
WordPress をインストールした後、ブラウザでアクセスすると PHPのコードがそのまま表示されるという問題が発生しました。
この問題の原因と解決策について備忘録としてまとめます。
発生した問題
・WordPress をセットアップし、ブラウザでアクセスしたところ PHPのコードがそのまま文字列として表示される。
・期待する動作はPHPが適切に解釈されて、WordPressの画面が表示されること。
原因
この問題の原因として、以下の2点が考えられます。
・php-fpm が動作していない
・Apache の設定で PHP のハンドラーが正しく設定されていない
特に、php-fpm を使用する環境で mod_php の設定が有効になっていると競合が発生し、PHP のコードがそのまま表示されることがあります。
調査
1.php-fpmの動作確認
まず、php-fpmが正しく動作しているか確認します。
sudo systemctl status php-fpm
コマンドを打つと以下のように出力され正常に表示されていることがわかります。
php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2025-03-26 12:34:56 JST; 5min ago
もし inactive (dead) になっている場合は、php-fpm を起動し、自動起動を有効化していきます。
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
2.Apacheの設定を確認
現在の httpd.conf を確認します。
httpd.confを確認すると以下のように設定されていました。
Include /etc/httpd/conf/vhosts/*.conf
Include /etc/httpd/conf.d/ssl.conf
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
<Directory "/var/www/html/wordpress">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
●問題点
1.mod_phpを使用する設定になっている。
SetHandler application/x-httpd-php が記述されており、mod_php を使用する設定になっており、php-fpm を使用する場合は mod_php を無効化し、php-fpm の設定を適用する必要があります。
2.autoindex.conf と php.conf の設定が不足している。
autoindex.conf と php.conf の設定が不足していることがわかります。これらを設定しないと正常に動作されません。
上記の2点が原因で動かないことがわかり
httpd.confを以下のように変更しました。
Include /etc/httpd/conf.d/autoindex.conf
Include /etc/httpd/conf.d/php.conf
Include /etc/httpd/conf/vhosts/*.conf
Include /etc/httpd/conf.d/ssl.conf
<Directory "/var/www/html/wordpress">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
●変更点
変更点は以下の2点になります。
・autoindex.confとphp.confをIncludeすることで、適切なPHPの処理するようにする。
・SetHandler application/x-httpd-phpを削除し、mod_phpを無効化する。
3. Apache の設定を確認
修正が正しく適用されるかを確認します。
sudo apachectl configtest
問題がなければ Apache を再起動します。
sudo systemctl restart httpd
これで、PHP のコードが適切に処理されるようになりました。
4.まとめ
問題の原因
php-fpm を使用する環境で mod_php の設定 (SetHandler application/x-httpd-php) が有効になっていた。
php.conf や autoindex.conf が読み込まれていなかった。
対応策
・php-fpm が動作していることを確認し、起動・自動起動を設定
・Apache の設定 (httpd.conf) を修正し、php.confを適用
・設定の確認 (apachectl configtest) を行い、Apacheを再起動
過去の Confluenceの設定では php_moduleをインストールして構築していたため、設定が誤っていたようでした。
しかし、php_module (mod_php) は非推奨のため、今後は php-fpm を使用するようにしましょう。
Discussion