PHPファイルとHTMLファイルの違い

当サイトでご紹介しているような.htmlファイルの形式でホームページを作成する場合、ブラウザは書かれているHTMLを直接解釈して、そのままブラウザで表示されます。

一方、WordPressなどのCMSはPHP(Hypertext Preprocessor)で書かれており、こちらはサーバーサイドのプログラミング言語となっています。そのため、<?php ?>で囲まれたPHPコードをサーバー上で実行した上で、その結果のHTMLがブラウザに返されてサイトが表示されます。

例えば、PHPファイルに以下のように記載した場合、<?php ?>で囲まれた部分がサーバー上で実行され、<h1>あいうえお</h1>も含めたHTMLがブラウザに送信されてサイトが表示されます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>あいうえお</title>
</head>
<body>
<?php echo "<h1>あいうえお</h1>"; ?>
</body>
</html>

このPHPの具体的なマニュアルについては公式サイトをご参照ください。
PHPマニュアル

ブラウザが解釈できるのは、HTML、CSS、JavaScriptのみとなっているため、ブラウザ側ではこのPHPファイルを直接処理することができません。

これはPHPファイルにHTMLだけを書いた場合でも、実行する<?php ?>のコードがないことを確認した上でブラウザに返されるため、常にサーバーサイドでの処理が必要となります。

そのため、HTMLファイルはブラウザで直接処理できるのに対し、PHPファイルはサーバー側でのPHPエンジン(PHP8などの処理系エンジン)による動的な処理が必要となる点で違いがあります。

拡張子.phpと拡張子.htmlでサイトを作成した場合の違い

仮にPHPファイル内で上記のような<?php ?>コードを使用せず、以下のように単にHTMLのみをPHPファイルに記載した場合でも、HTMLファイルと同様にサイトが表示されます。

index.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>あいうえお</title>
</head>
<style> body {background-color:#004c25;color:#fff;}</style>
<body>
<h1>あいうえお</h1>
</body>
</html>

実際の表示

拡張子.phpで作成した場合の表示

この場合でも、サーバーのPHPエンジンは、実行するPHPコードがないことを確認した上でブラウザにHTMLをそのまま返すため、サーバーサイドでの動的な処理を経由することにはなりますが、結果については通常の.htmlファイルと同様になります。

そのため、拡張子.htmlで書いていたホームページを、全て拡張子.phpに変更したとしても、特に問題なく表示されるはずです。

この点、PHPファイルはデータベースを利用して動的な操作もできますし、上記のようにHTMLをそのまま記載すれば、HTMLファイルと同様に表示できます。

一方で、HTMLファイルにPHPコードを記載しても反応しないため、サーバー上での動的な処理はできません。

PHPファイルには、PHPコードもHTMLも両方とも書けますが、HTMLファイルにPHPコードを書いても動かないため、PHPファイルで作成した方がメリットがあるようにも感じます。

しかしながら、上記のように、PHPファイルはブラウザが直接解釈しているわけではなく、サーバーサイドのPHPエンジンで処理した上で結果を表示しているため、常にサーバーサイドでの処理が必要になります。

そのため、ブラウザが直接解釈できる静的なHTMLファイルと比較すると、一般的には動的なPHPファイルの方が表示に時間がかかりますし、PHPエンジンのバージョン管理やセキュリティ対策などでも煩雑化する傾向があります。また、サーバー側での動的な処理が必要なため、アクセスが多くなるとサーバーの負荷が増えます。

ただし、最近ではLiteSpeedなど、WordPressの表示が高速化される仕組みも出てきていますし、サーバーのスペックやPHP自体のバージョンによっても影響を受るため、必ずしもPHPがHTMLより遅いとは限りません。

それぞれにメリット、デメリットがありますが、サーバー側での動的な処理の有無が、拡張子.phpで作成されたWordPressのような動的サイトと、拡張子.htmlで作成された静的なサイトの違いになります。

ちなみに、HTMLファイル内にPHPコードは書けないものの、サイト内にHTMLファイルとPHPファイルが混在しても全く問題はありません。動的な操作が必要な場合には、その箇所だけPHPページで作成するとよいでしょう。

PHPファイルとHTMLファイルの表示プロセスの違い

PHPファイルとHTMLファイルがブラウザで表示されるまでのプロセスは、それぞれ以下のようになります。

PHPファイルの場合

拡張子.phpのURLにアクセス→
ブラウザがサーバーにPHPファイルをリクエスト →
サーバーがPHPファイルをPHPエンジンに渡す →
PHPエンジンがPHPコードを実行(サーバー側での処理)
生成されたHTMLをサーバーに返す →
サーバーがHTMLをブラウザに返す →
ブラウザがHTMLを解釈してサイトが表示される

PHPは動的にページを生成するためのサーバーサイドのスクリプト言語であるため、サーバー上でのみ実行されます。ブラウザはPHPコード自体を見ることはなく、ブラウザが受け取るのはPHPによって生成された結果のHTMLだけです。

そのため、仮にサーバー上ではなく、パソコン内でphpファイルを作成して表示したとしても、パソコン上にはPHPエンジンがないため、PHPファイルがHTMLとして処理されず、テキストとしてそのまま表示されることになります。

ローカル環境でもPHPの動作確認をする場合には、XAMPPやMAMPなどのソフトウェアをインストールする必要があります。

一方、レンタルサーバーではPHPのコードを解釈して実行するPHP7などのプログラムがインストールされており、たいていはデフォルトの状態で使用可能になっています。

PHPエンジン

そのため、サーバー上のPHPファイルにアクセスがあると、サーバー上でコードを実行され、実行した結果のHTMLがブラウザに返されることでサイトを動的に表示されます。

また、PHPコードにデータベースからコンテンツを取得することが書かれている場合、それを実行した上でHTMLを作成してブラウザに返されます。WordPressなどのPHPファイルにアクセスした際にサイトが表示されるのは、サーバー内で動的に生成したHTMLをブラウザに返して表示させているからです。

一方、.htmlファイルについては、ブラウザは直接解釈して表示できるため、このようなPHPエンジンによる動的なプロセスを経由せずにそのまま直接表示されます。

HTMLファイルの場合

.htmlのURLにアクセス →
ブラウザがサーバーにHTMLファイルをリクエスト →
サーバーがHTMLファイルをそのままブラウザに返す →
サイトが表示される

HTMLファイルの場合、サーバーサイドで特別な処理をする必要がなく、完成済みのHTMLファイルをブラウザが直接解釈して表示します。

そのため、PHPファイルでもHTMLファイルでも、結果的にはブラウザがHTMLを受け取ってサイトを表示することに違いはありませんが、動的なプロセスを経由するのか、ピュアなHTMLファイルのまま、静的な状態で表示されるのかで違いがあります。

当サイト運営者の印象では、以前までは「.html」ファイルで作成された静的サイトが多かった印象がありますが、最近ではWordPressのPHPファイルで作成された動的なサイトが増えてきたと感じています。

ちなみに、WordPressについては、パーマリンク設定の「カスタム構造」で/%postname%.htmlなどと指定すると、URLを.html形式で出力することができます。

けれども、この場合でも、上記のように動的に処理された結果としての.html形式になるため、このままでは静的HTMLの状態では表示されません。WordPressでピュアな静的HTMLにするには、プラグインを利用するなどして、実際に静的な.htmlページの現物をサーバー内に保存しておく必要があります。