kusanagi apache2.4でhtmlファイルの中でphpを動かす設定

kusanagi-apache-php-in-html

WordPress入りのサーバー引越しを
①Freebsdの古いやつ apache 1.3.41 php5.2系 MySQL 5.0系
②CentOS7 kusanagi apache 2.4 php7.2 MySQL(MariaDB)5.7
③CentOS7 kusanagi Nginx1.13 php7.2 MySQL(MariaDB)5.7
という流れで行っています。

①は、ドキュメントルートで、htmlファイルがWordPressの外にあり、さらにhtmlファイルの中ではphpが動いてます。WordPress領域外に各種moduleがありincludeでhtmlファイルなどに読み込まれています。プラグインやテーマの影響範囲外にhtml(phpが書かれている)ファイルがあるため、ワードプレス更新時、ワードプレスのスコープ外なファイル達の修正コストが高く、SSL化を検討したところ、HTMLファイル内でハードコーディングなども見られたため、引越のついでにWordPress領域外にあるhtmlファイルを全てWPテーマに取り込むことにしました。

②の工程でkusanagi apache2.4でミドルウェアの設定をいくつか書き換えましたので以下へメモとして残します。最終的にNginxで動かす時は、htmlファイルをphpファイルに全て書き換えます。

②の段階でkusanagiは、以下の様にプロヴィジョニングしています。
kusanagi init --tz tokyo --lang ja --keyboard ja --httpd --php7 --ruby24
apache2.4でphp7という感じです。

phpとapacheの両方からhtmlの中でphpを許可する設定が必要です。

ググるとよく出てくる .htaccess や httpd.conf や php.ini の変更 だけでは出来ず、ハマりました。

php7の設定変更

/etc/php7-fpm.d/www.conf の 388行目

;security.limit_extensions = .php .php3 .php4 .php5 .php7

security.limit_extensions = .php .php3 .php4 .php5 .php7 .html

に変えます。ここが一番の肝ですが、非推奨設定です。③になったら戻すつもりで行います、②の段階として一時的な措置です。見るからにlimit外したくないですね・・・、精神的にぐっと不安が増す設定・・・。

apache2.4のバーチャルホスト設定変更

②の段階で、2箇所編集しました。

/etc/httpd/httpd.confの78行目

AddOutputFilter INCLUDES .shtml 後に以下の2行追加します。

AddType application/x-httpd-php .php .html
AddHandler application/x-httpd-php .php .html

定番の設定ですが、これだけでは足りませんので、以下の設定も行います。

/etc/httpd/httpd.confの137行目

<FilesMatch \.php$>

<FilesMatch \.(php|html)$>

に変えます。htmlファイルを404とせず、認識させる設定です。

kusanagiの各種confファイルを読み漁りました。かなり時間がかかります。

書き換えする時はgitバージョン管理などをしたほうがいいです。

注意点

非SSLでWPをapache運営している場合、yum updateで「プロファイル名_ssl_html.conf」の中身が書き換わり、headers_moduleの再読み込みによるapacheのskipが起こり、apacheのstatusがfailedになります!systemctl restart httpd.serviceやってもダメです。「プロファイル名_ssl_html.conf」や「ssl.conf」が読み込まれない様に「プロファイル名_ssl_html.conf.bk」や「ssl.conf.bk」などにファイル名を書き換えてapacheを起動できるようになります。

ワードプレス/Azure/AWS/kintoneの開発/運用

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください