エックスサーバーを使用しているウェブサイトのHTMLファイル内でPHPを使えるようにしたいときがありました。
共通パーツをPHPのincludeで読み込むようにしたいという目的があり、.html拡張子でPHPプログラムを実行できるようにする必要があったのですが、エックスサーバーでは.htaccessにコードを1行追加することで、PHPをHTMLファイル内で使えるようにすることができます。
エックスサーバーでサーバー番号が2001番より大きいサーバー環境とPHP7.4.13のバージョンで行ったやり方です。
エックスサーバーで.htaccessを開く
エックスサーバーでPHPをHTMLファイル内で使えるようにするために.htaccessにコードを記述するので、以下3つの方法のどれかでhtaccessファイルを開きます。
- エックスサーバーのサーバー管理からサーバーパネルに進み「.htaccess編集」を開く。
- エックスサーバーのファイル管理からファイルマネージャに進みpublic_htmlの下の階層の「.htaccess」ファイルを編集ボタンで開く。
- FTPサーバーでサーバーに接続してpublic_htmlの下の階層の「.htaccess」を開く。
PHPをHTMLファイル内で使えるようにするコード
開いた.htaccessファイルには、AddHandlerから始まる以下のコードを記述します。
AddHandler fcgid-script .html
コードの記述後は.htaacessの編集内容を保存します。
PHPをHTMLファイル内で使えるようにするAddHandlerから始まるコードについては、少しは理解しておきたかったので、簡単にではありますが調べた内容を紹介します。
AddHandler
AddHandlerはApacheのハンドラで、ファイルが呼ばれたときに実行される動作の Apache における内部表現です。
fcgid-script
fcgid-scriptが指定されているファイルはFastCGIとして動作して、 サーバにより実行され、その出力がクライアントに返されます。
FastCGIという用語が出てきましたが、FastCGIはCGIの動作方法として1つの方法になり、通常のCGIプロセスは無駄が多いため、最初のプロセスを保持して高速化を頑張りますよ。みたいな方法です。
エックスサーバーでのFastCGI設定は、以前は設定の項目があった記憶があるのですが、PHP5.1.x以降のバージョンではFastCGIが常時ON(変更不可)で対応しているようです。
そのため例えばtest.phpのように作成したphpファイルにphpinfo()を記述してサーバーにアップ後、test.phpページでServer APIを確認すると、FastCGIに対応していることが分かります。
.html
コード最後の部分の.htmlは、PHPをHTMLファイル内で使えるようにするため、.html拡張子が対象になるように指定しています。
PHPが.html拡張子のファイルで使えるようになる
エックスサーバーの.htaccessにAddHandler fcgid-script .htmlのコードを記述すると、PHPが.html拡張子のファイルで、つまりHTMLファイルで使えるようになります。
<?php echo 'PHP出力テスト'; ?>
PHPのecho文で文字列をHTMLファイルで出力してみると、.html拡張子のファイルで文字列が表示するので、PHPが使えるようになったのが確認できます。