ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

超初心者向けCGI講座コミュの第3回講座 : CGIを動かそう

  • mixiチェック
  • このエントリーをはてなブックマークに追加
今回は簡単なCGIを書きます。
お正月も近いことですしおみくじにしましょう。

言語はPerlを利用します。
まずはコピー&ペーストして動くかどうかを試しましょう。

下の物をメモ帳などにコピーして、ファイルを保存してください。
ファイル名は「omikuzi.cgi」という名前にしましょう。
-----------------------------------------------------
#!/usr/local/bin/perl

@omikuzi = ('大吉','中吉','小吉','吉','凶','大凶');

$kazu = @omikuzi;

$youso = int(rand($kazu));

$kekka = $omikuzi[$youso];

print "Content-type: text/html\n\n";

print "<html>\n<head>\n";
print "<title>おみくじ</title>\n";
print "</head>\n";
print "<body>\n";
print "今年のあなたの運勢は <b>$kekka</b> です\n";
print "</body>\n";
print "</html>";
-----------------------------------------------------

CGIはHTMLとは違い、何かのバグがあると動かなくなります。
このファイルを動かすにはいくつかの注意点があります。

 1.最初の1行目の記述はサーバごとに違う

   最初の1行目に下記の記述があります。
     「#!/usr/local/bin/perl」
   これはperlというプログラムが置いてある場所を書いてます
   WindowsにApacheというHTTPDをインストールした方は
     「#!C:/perl/bin/perl」
   なんて書き方になるかもしれません。
   perl.exeというファイルがある場所を指定していることになります。
   perlをどこに保存したか解らない方は、検索して探して見ましょう。

 2.アップロード
   レンタルサーバーにアップロードする方は「転送モード」と   「パーミッション」に気をつけてください。
   んなもん、知ってるっつの!
    って方は今回はスルーでお願いします。

   転送モード
    アスキーモードとバイナリーモードってのがあります。
    CGIはアスキーモード!って思っておいてください。
    詳しくは最寄のホームページを参照してください。

   パーミッション
    パーミッションは権限を決めるものです。
    セキュリティのレベル設定と思っておいて良いと思います。
    これも詳細は最寄のホームページを見てみましょう。

    基本的にCGIのパーミッションは755のことが多いかと思います。
    ちなみに、WINDOWSにはパーミッションはありません。

コメント(16)

なんかよくわかりません。
とりあえず
ソースをコピーしてみたんですが
うまくいきません。
tkttktktktkさん

忍者って自作CGIの動作ってできましたっけ?
もしくは、CGIはこのディレクトリにおいてください、とか指定ありませんか?

確認してみてください。
CGIやPHPなどの利用は可能ですか

只今ホームページではFlashやJavaAplet、JavaScript、shockwaveなど、クライアントのブラウザで実行されるものに関しては設置することができますが、サーバ側で動作する種類のプログラム実行環境(perl, php, ruby, c, c++等)の提供は致しておりません。
 と書かれていました。 
ブラウザで実行されるものに関しては○
サーバー側で動作する種類のプログラム実行環境×
とあります。
今回のCGIは サーバー側にあたるんでしょうかね
http://g-space.jp/~mcadult/omikuji.cgi

ここではエラーになりました。

このサーバーでもCGIは可能と書いてあったのですが
僕の操作がおかしかったんでしょうか?
僕はコピーペーストして拡張子をcgiに変えて
アップロードしただけです。
何か操作がたりないんでしょうか?
tkttktktktkさん

4:そうですね。サーバ側です。

5:これについては確かにエラーになっていますね。
正しくコピーしたのであれば原因がちょっとわからないですね。

解決はとりあえず以下の二つの切り口があるかな。
1.みずのさんが以下で紹介されていたものを使ってみる
http://mixi.jp/view_bbs.pl?id=300582(3番目の投稿)

2.超単純なCGIは動くか試す
↓超単純CGIとは
#!/usr/local/bin/perl
print "Content-type:text/html;\n\n";
print "OK";

http://finite.littlestar.jp/tmp/test.cgi
こんな感じになるはずです。
2.がOKなら1を試しましょう。

また、もし自分のマシンにperlがインストールしてある場合
DOSプロンプトから
perl -wc xxxx.cgiと実行してみると、どこかの行にエラーが出ているかもしれません。
2.超単純なCGIは動くか試す
↓超単純CGIとは
#!/usr/local/bin/perl
print "Content-type:text/html;\n\n";
print "OK";
をコピーしてやったところ
http://moviefile3.kir.jp/test.cgi
とエラーがでてしまいました。
ちなみにパールはインストールしてあります。
パーミッションの設定をしていないのが問題なんですかね
C:\Documents and Settings\tktktktjp>cd\1weekCGI

C:\1weekCGI>perl -wc test.cgi
test.cgi syntax OK
1weekCGI というフォルダにtest.cgiを入れて
コマンドプロンプトで チェックしましたが
エラーはでませんでした。
コマンドパス /usr/bin/perl
Version 5.8.6

となってますから、一行目を直せば大丈夫ではないですか?パーミッションも勿論設定しないといけません。
1行目を
#!g-space.jp/usr/local/bin/perl
print "Content-type:text/html;\n\n";
print "OK";
と書き換えて
パーミッションも755にしました。
http://g-space.jp/~mcadult/test.cgi
うーん なにがいけないんでしょう
いえいえ、一行目は
#!/usr/bin/perl
にしてください。
え、 そうなんですか
どこでくるったんでしょう 
!!!!!!!!!!!!!!!!!!
わかりました
local
がいらなかったんですね
できました。http://g-space.jp/~mcadult/test.cgi
レスを下さった皆様ご親切に有難うございました。
成長できるように頑張ります。
ハイ、大抵は
#!/usr/local/bin/perl

#!/usr/bin/perl
のどちらかの場合が多いです。どちらでも大丈夫な場合もありますけどね。忍者サーバの場合は後者じゃないとダメみたいです。
kagoyaサーバー
ではcgiのチェック機能あるんですが
CGIチェック結果
[/public_html/test.cgi]

/home/moviefile3/public_html/test.cgi syntax OK


OKでしたが なぜかエラーでした。
kagoya ////
サーバーによってできるできないがあるんですね
忍者じゃなくてkagoyaでしたか。
-cによるチェックはあくまで文法チェックなのでperlのパスが合ってるか否かまでは見てくれなかったと思います。
はじめまして!!

スゴイ面白いコミュですね!!!

さっそく「おみくじ」の方試させて頂きました。

これから☆ヽ(▽⌒)よろしく♪です!!

ログインすると、残り1件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

超初心者向けCGI講座 更新情報

超初心者向けCGI講座のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング