CGI講座 ≫ とにかく書く

準備

理屈だけじゃはじまらない。
とにかく簡単なのを書いてみましょう。

HTMLのときと同じくテキストエディタを使います。 よく使うようならショートカットを作成してデスクトップ上に置いておくのもいいでしょう。

書いたあとはPC環境に作ったWebサーバにブラウザからアクセスして確認をするので、こちらも前に説明した「準備」を参考にして環境を整えて置いてください。

さっそく書いてみましょう!
書き方はPerlとPHPで違うので、それぞれ別に説明します。



と、その前に、確認はPC環境で行うので、作ったファイルをドキュメントルート下にコピーするより、直接その場所に保存するように、ファイルの置き場所を最初から確保しておきましょう。

Webサーバのドキュメントルートが

 C:\htdocs

だった場合、この直下か、その下にディレクトリを作ってそこに保存します。ディレクトリがない場合は、あらかじめ作っておきましょう。
また、ファイルを置いた場所でCGIが実行できるようになっている必要があります。Webサーバの設定ファイルでよく確認しましょう。



中身を書いてみよう!(PHP編)

簡単なものを書いてみる

PHPファイルでは、「<?php」と「?>」に書いた部分がプログラムになるというだけなので、CGIでPHPを使う場合は、他の部分は普通にHTMLを書いてかまいません。 普通にHTMLを書いて、途中必要な部分のみをPHPで書くことができるので、非常に見やすく書きやすい形式といえます。

<!DOCTYPE html>
<html>
<head>
<title>My HOMEPAGE</title>
<meta charset="utf-8">
</head>
<body>

<?php echo "hello!"; ?>

</body>
</html>

PHPで書いたCGIはPerlと違って「この出力結果の内容はこういう形式でかかれてますよー」というヘッダー宣言を書く必要がないのでその点でも非常に楽です。

ファイルとして保存する

名前を付けて保存しましょう。基本的に拡張子は.phpです。test.phpとでもしておきましょうか。
別の拡張子で指定されている場合はそれにしたがってください。 このとき、拡張子なしで保存すると拡張子がtest.txtとなってしまうので、きちんと拡張子まで指定しましょう。もし間違えてしまったらエクスプローラーから名前を変更します。

保存場所は、保存場所にきめたドキュメントルートの下です。

C:\htdocs

下におくと「C:/htdocs/test.php」となります。

さあ!早速アップしましょう。
と・・・行きたい所ですが。一つ注意を。
このtest.phpぐらいでしたら問題ありませんが、自分で作ったCGIスクリプトは絶対に何か間違いがあります。文法上の間違いですね。
できたら、コマンドプロンプトを使って間違いをチェックしておきましょう。

コマンドプロンプトを立ち上げたら、次の順に実行します。

C:
cd /htdocs
php -l test.php

No syntax errors detected in test.php

と表示されればOKです。このあたりの詳しい説明はPHP入門でしています。参考にしてください。


ブラウザで確認する

ブラウザで確認してみましょう。実行したいCGIファイルが

C:/htdocs/test.php

だった場合、ドキュメントルートがC:/htdocs/だとすると、ブラウザのURL欄に

http://localhost/test.php

といれて実行します。結果は次のとおり出力されればOK!

hello!


PHPの場合、文法上の間違いがあればたいていブラウザに表示されます(設定によっては出ないことがあります)
コマンドプロンプトでチェックしていればその段階で文法上のエラーはつぶせているはずなので、文法上に間違いがなければCGIとしてのエラーになります。

これは実行するPHPファイルのパスが違っている、とかそもそもPHP自体が動かない設定になっている可能性があります。

プログラムを実行してみる

今まで書いてきたのはただ文字列を出力する簡単なものです。
実際CGIはサーバ側で何か処理をして、それをHTMLとして出力する場合が多いです。

<?php $year = date("Y"); ?>
<!DOCTYPE html>
<html>
<head>
<title>My HOMEPAGE</title>
<meta charset="utf-8">
</head>
<body>

<?php for($month = 1; $month <=12; $month++) { ?>
<?php echo $year; ?>
<?php echo $month; ?>月の最終日は
<?php echo date("t", mktime(0, 0, 0, $month, 1, $year)); ?>
日<br>
<?php } ?>

</body>
</html>

今年の毎月の最終日をすべて出力するPHPです。 結果はつぎのようになります。

2018年1月の最終日は 31日
2018年2月の最終日は 28日
2018年3月の最終日は 31日
2018年4月の最終日は 30日
2018年5月の最終日は 31日
2018年6月の最終日は 30日
2018年7月の最終日は 31日
2018年8月の最終日は 31日
2018年9月の最終日は 30日
2018年10月の最終日は 31日
2018年11月の最終日は 30日
2018年12月の最終日は 31日


後ろに色がついている部分がPHPです。プログラム部分は途中どこに書いても問題ありません。



PHPのすすめ


以前はCGIと言えばPerlというぐらいでしたが、今は圧倒的にPHPが多いです。
誰でも自由に改変して使えるOSSもPHPで書いたものをよく見かけます。

Perlと比べると、パスを書く書かない、という点だけでもPHPのほうが楽です。
文法的には非常によく似ているので、両方同時にやっているとちょっと混乱します。

CGIとして使える言語は、他にはASP、Ruby、Pythonなどがあります。
C言語やJavaなどもちょっと使い方は違いますが、サーバ側で動くプログラムとして利用可能です。

が!どれもサーバ側で用意してある場合でしか使う事ができません。
一般的なレンタルサーバではPerlとPHPは大抵使えるはずなので、色々な事情を考えると、最初にCGIを学ぶ場合はPHPが一番いいかと思います。はい。



ページのトップへ戻る