レンタルサーバーにおける「CGI」と「PHP(モジュール版)」の違いについて書きます。
1. 「CGI」と「PHP(モジュール版)」の共通点
「CGI」と「PHP(モジュール版)」のどちらも、Webページとしてプログラムを実行させる機能です。ウェブブラウザで特定のURLにアクセスすると、ウェブサーバー側でそれに対応するスクリプトを実行させることができます。
CGI では いろいろなプログラミング言語が使えますが、レンタルサーバーサービスによって、用意されているプログラミング言語に違いがあります。PHP も CGI として使うことはできるのですが、それよりはウェブサーバーのモジュールとして組み込まれた機能として利用される場合が多いため、「CGI」と「PHP(モジュール版)」という2つを取り上げています。レンタルサーバーでは、この2種類が用意されていることが多いです。
2. 両者の違いと「PHP(モジュール版)」の手軽さ
レンタルサーバーサービスを契約して利用する立場から見ると、「PHP(モジュール版)」を使う方がラクです。
その例として、HTML文書として「Hello!」と画面に表示する場合を比較してみます。
※ エックスサーバーを使った例になります。
1. CGI の場合
エックスサーバーでの CGI はいろいろなプログラミング言語が使えますが、ここでは Perl を使った例を示します。
ドキュメントルートとなるディレクトリに、以下の内容を記述した hello.cgi
というファイル名のファイルを作成します。
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print "<html lang=\"ja\">\n";
print "<head>\n";
print " <meta charset=\"UTF-8\">\n";
print " <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n";
print " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n";
print " <title>Test</title>\n";
print "</head>\n";
print "<body>\n";
print "Hello!\n";
print "</body>\n";
ウェブブラウザでこのファイルにアクセスすると、画面に「Hello!」と表示されます。
※ 最低限の機能で説明したいので、perl のライブラリは使っていません。
2. PHP の場合
同じことを、PHP(モジュール版)でやってみます。
以下の内容をファイルを作成し、ドキュメントルートとなるディレクトリに hello.php
というファイル名を付けます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
</head>
<body>
Hello!
</body>
</html>
PHP の場合は HTML がそのまま書けるため、わざわざ print
のような命令(関数)を使う必要がありません。
あえて、「Hello!」をPHPの命令で出力するのであれば、echo
という命令を PHPのタグで囲います(<?php
と ?>
)。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
</head>
<body>
<?php echo "Hello!"; ?>
</body>
</html>
こちらも、ウェブブラウザからこのファイルにアクセスすると、画面に「Hello!」と表示されます。
2つのファイルを比べてみると、明らかに PHP の方が記述が簡単で分かりやすいです。
他にも両者の違いはいろいろありますが、これがPHPの一番の利点だと思います。