とっちゃん@nyanco! です。
今回は静的ページ(.htmlファイル)でPHPを動作させる方法の覚書です。
htmlで作られた既存のwebサイトに、部分的にCMS(WordPress)をインストールしてTOPページ(index.html)にWordPressの新着情報を表示させたいケースなどでの想定です。
公開中のwebサイトに手を加える場合、最悪ページが表示されなくなる恐れがあるので必ず作業前にバックアップを取るか、できればテストサイトを作ってそちらで問題なく動作するのを確認してから公開中のwebサイトにコピーするという流れを推奨します。
あくまで自己責任の元でお願いいたします。
「index.html」の設定
「index.html」の一番初めの行に下記を追記します。
<?php require('./wp/wp-load.php'); ?>
「./wp/wp-load.php」は部分的にインストールしたWordPressフォルダの中の「wp-load.php」までの相対パスを記述します。
【相対パスの記述メモ】
・「./」は同じ階層を意味します。省略することも可能。
・「../」はひとつ上の階層に移動するという意味。ふたつ上の階層に移動なら「../../」となる。
「.htaccess」に追記する
次に、「index.html」と同じ階層にある「.htaccess」ファイルの設定をします。
追記する意味としては、「index.html」ファイルを拡張子はそのままでPHPを実行できるようにする記述となります。
記述方式としては以下の「AddType」、「AddHandler」の2種類がありどちらでも大丈夫ですが、筆者の環境ではAddTypeだと下記のようなエラーが出たのでAddHandlerにしました。
Your server is running PHP version 5.4.45 but WordPress 5.4.5 requires at least 5.6.20.
Google翻訳:サーバーはPHPバージョン5.4.45を実行していますが、WordPress5.4.5には少なくとも5.6.20が必要です。
恐らく、部分的にインストールしたWordPress用に指定したPHPバージョンと食い違っていたのが原因のようでした。
AddType
<Files "index.html">
AddType application/x-httpd-php .php .html
</Files>
AddHandler
<Files "index.html">
AddHandler php【xx】-script .html
</Files>
php【xx】の【xx】はレンタルサーバーのPHPバージョン数です。
PHPバージョンはレンタルサーバーのコンパネ(コントロールパネル)などから確認できます。
バージョン数は下記の要領で入れます。
- PHP 5.6.x なら 56 例:php56-script
- PHP 7.0.x なら 70 例:php7-script
- PHP 7.2.x なら 72 例:php72-script
メモ1 拡張子単位で対象にする
ちなみに上記AddType・AddHandlerどちらのコードにも共通している、
<Files "index.html"> ~ </Files>
を、
<FilesMatch \.html$> ~ </FilesMatch>
とすると「.html」という拡張子のファイル全てが対象となります。
メモ2 PHPが動作しない?【CGI版PHP】
別案件で「AddType」、「AddHandler」どちらで記述してもPHPが上手く動かなかったケースがありましたが、下記の「SetHandler」を使うと上手く動作したのでメモしておきます。
<Files "index.html">
SetHandler php72-cgi
</Files>
ちなみに「AddHandler」と「SetHandler」の違いは以下の通り。
- 「AddHandler」拡張子に対してハンドルをマップ
- 「SetHandler」特定のファイルに対してハンドルをマップしつつ、デフォルトのハンドラをオーバーライド(上書き)する特徴がある
「CGI版PHP」だと「SetHandler」の方が良いのかも?知れません(知識不足なので間違えてたらごめんなさい…)。
「.htaccess」がない場合
「.htaccess」というファイルが「index.html」と同階層にない場合は、新規テキストドキュメントとして作成します。
Windowsなら「右クリック」→「新規作成」→「テキスト ドキュメント」、
Macなら「テキストエディター」からテキストドキュメントを新規作成できますにゃ~
その際、拡張子を表示させておかないと「.htaccess」というファイル名を設定できないので、拡張子が非表示になっている場合は▼下記記事を参考に拡張子を表示させてからファイル名を設定するようにしてください。
参考にしたサイト様
とても勉強になりました!
ありがとうございますにゃ~
「index.html」でPHPが動作すればOK
あとは「index.html」のbodyタグ内に下記のように適当なPHPを記述し、動作が確認できれば完了です!
<?php echo "Hellow PHP!" ;?>
本記事がどなたかの参考になれば幸いです。
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント