パスとパーミッションの設定 - Perl&Unix系OSの場合
プログラムの起動と表示する仕組みはだいたい理解できたのではないかと思いますが、どうでしょうか?ただ、これからいっしょに実験を行っていくときの動作環境として、Unix系OSでApacheが動いていて、Perlでプログラムを・・・と考えています。
ですから、若干ですが、Perlプログラムを書くときの特記事項的なものをまとめてみました。(知っている人の方が多いと思いますが・・・念のためです)
Perl のパス(Path)を明示すること
先ほど、Content-typeを書けば動く!と言いましたが、通常皆さんがレンタルしているUnix系のサーバーではこれだけでも動かないのです。Perlはインタプリタといって、書いたソースファイルを逐次的に機械語に変換して実行する言語ですから、Perlプログラムの本体がどこにあるかを、ソースファイルに書き込む必要があるのです。
01:#!/usr/local/bin/perl
02:
03: print "Content-Type: text/html\n\n";
04: print "<html><head></head><body>Hello World!</body></html>";
「#!/usr/local/bin/perl」は通常パスと呼ばれます。このパスもPerlプログラム本体の場所ということになるので、Perlをどこにインストールしてあるかによって変わってきます。
サーバーを直接またはTelnetで扱えるなら「which perl」とコマンドを打つことで、Perlのパスを知ることができますが、普通レンタルサーバーの置き場まで直接行くことなんて出来ないですし(^^;)、Telnetも許可していないところがほとんどです。
これは通常、借りているサーバーのホームページに公開されているので、探してみてください。
ファイルのパーミッションの設定
これで、上記のソースファイルを「abc.cgi」というファイルで保存起動!っと思っても残念ながらまだ動きません。エラーです(Internal Server Errorというようなメッセージが出ると思います)。
Unixのサーバーは誰がどのファイルを所有していて、どのようなことができるのか、というのを大変厳しく管理しています。これが、ファイルの「パーミッション」と呼ばれるもので、4(読み)、2(書き)、1(実行)の数字の組み合わせと、Owner,Group,Othersという実行者により、777とか755とか664といった設定を行います。
通常のWebプログラム用のファイルなら、読み出しと実行が必要ということですので、「4+1=5」で、「5」というパーミッションを設定する必要があるのです。これは通常HTMLで使っている「FTPクライアント」で設定できます。
ただ、このパーミッションも、サーバーの設定によって様々ですので、これもレンタルしているサーバーのホームページで探してみてください。通常は「755」に設定するようにかかれています。
これで、やっとブラウザに「Hello World!」という文字が表示されるプログラムができます。
ですが、文字を表示させるだけなら、わざわざそんなことをしなくても、普通にHTMLで書けば言い訳で、プログラムにする意味がありません。やはり動的(ダイナミック)に表示内容を変化させたい、、、という理由があるからこそのWebプログラムだと思います。
そこで、次回は簡単に毎回違う内容を表示するページを作ってみましょう。
(更新2004/12/25 by あいまい)





