Webサイトのヘッダー・フッターなどの共通パーツをphp includeで管理したい——しかし拡張子が.htmlのままではPHPが動作しません。本記事では、MAMPのローカル環境とConoHa WINGの本番環境それぞれで、HTMLファイル内でPHPを動作させる設定方法を解説します。
目的:HTMLでphp includeを使いたい
HTMLファイルの共通部分をphp includeで管理するのが目的です。具体的には以下のような記述でインクルードファイルを読み込みます。
<?php $a = $_SERVER['DOCUMENT_ROOT']; include($a."/ディレクトリ名/ファイル名.shtml"); ?> // あるいは短縮形 <?php include($_SERVER['DOCUMENT_ROOT']."/ディレクトリ名/ファイル名.shtml"); ?>
前提:httpd.conf設定
.htaccessを読み込むため、/Applications/MAMP/conf/apache/httpd.confで以下の編集を行います。
<Directory /> Options Indexes FollowSymLinks AllowOverride None </Directory>編集後
<Directory /> Options Indexes FollowSymLinks AllowOverride All </Directory>
AllowOverride Allにすることで.htaccessの読み込みが有効になります。
準備:ファイル構成と基本記述
htdocsに以下の構成でファイルを作成します。
htdocs/
├── index.html
└── include/
└── test.shtml
index.htmlには以下を記述します。
<?php include($_SERVER['DOCUMENT_ROOT']."/include/test.shtml"); ?>
500エラーを解消する
MAMPサーバーを起動すると500エラーが発生する場合があります。原因は.htaccessに記述されたRewriteRuleをMAMPが処理できないためです。
/Applications/MAMP/conf/apache/httpd.confで以下の行をコメントアウトすることで解消します。
# LoadModule rewrite_module modules/mod_rewrite.so
MAMP環境でHTMLファイルにPHPを動作させる
MAMPではデフォルトでHTMLファイル内のPHPは動作しません。.htaccessに以下を追記することで有効になります。
AddHandler php-fastcgi .html .htm
MAMPを再起動するとHTMLファイル内のPHPが動作し、php includeが適用されます。
ConoHa WINGでHTMLファイルにPHPを動作させる
ConoHa WINGの本番環境では、MAMP向けの設定とは異なる記述が必要です。.htaccessに以下を追記します。
AddType application/x-httpd-lsphp .html
この設定を行うことで、ConoHa WINGのサーバー環境下でもHTMLファイル内のPHPが動作し、php includeが適用されます。
まとめ
- HTMLでphp includeを使うには
.htaccessの追記が必要 - MAMP環境:
AddHandler php-fastcgi .html .htm - ConoHa WING環境:
AddType application/x-httpd-lsphp .html - 両者は共存できないため、環境に応じてコメントアウトして切り替える