A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
ご自身のPCなどで作業することをローカルで作業するといいますが、
CGIをウンヌンするためにご自分のマシンの環境を整えます。
Windowsマシンなどを例にとって
1.FTPソフト(サーバにCGIファイルなどをアップロードするために必要です):例:FFFTPがおすすめ
2.CGIの内容を編集するため各種マルチバイトコード(Shift-JIS・EUC・Unicodeなど)に対応した「テキストエディター」が必要です。:例:EmEditorなど(メモ帳などは不可)
3.ブラウザ(これはありますね)
4.サーバ(これも・・・)
以上を準備して作業を行います。
まず、先だってのCGIをあなたの環境に合わせてテキストエディタで編集します。
index.cgiをEmEditorなどで開いてください。日本語が文字化けしていたら対応コードが自動で認識できていないのでEUCを指定して読み直しします。
まず、一行目のPerl言語を処理してくれるプログラムの指定が「#!/usr/local/bin/perl -w」記述されています。これを適切な形、サーバがRedHat系のLinuxというOSとかですと「#!/usr/bin/perl」などに変更(サーバの設定によって異なります)します。
問題なども設定可能ですが、まずはそこで保存します。
もうあるとは思いますが、FTPソフトでサーバに接続して、先ほどのファイルをアップロードします。
「cgi-bin」では、他のCGIとファイル名がかぶるおそれがあるので、「cgi-bin」の中に「test_200612」などのディレクトリ(フォルダ)を作成しそこにアップロードします。
アップロードできたなら、CGIファイルの属性(パーミッション)を変えてやります。
FTPサーバ設定にもよりますが通常は以下のような状態になっています。
rw- r-- r-- (持ち主 グループ 全て の順に割り当てられています。通常Webの場合誰もが特殊な場合を除き認証なしでアクセスしますので全ての部分が大事です)
r:読み込み権限が有効
w:書き込み権限が有効
x:実行権限が有効
rwx r-x r-x
にしてやればよいわけです。
文字のあるところを「1」無いところを「0」として数値で表現すると
2進数「111 101 101」=>10進数「7 5 5」
となります。
実行権限をつけるにはもうご存知の通りにしてください。
「http://www.******.net/cgi-bin/test_200612/index. …」などとして動作を確認します。
正常に動作しない場合は、テスト用に簡単なCGIを用意して試して見ます。
例としてファイル名「test.cgi」で以下の内容のファイルを作成し同様のことをします。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ここから
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
print "Hello... TEST OK !\n";
print "</BODY></HTML>";
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ここまで
「http://www.******.net/cgi-bin/test_200612/test.cgi」で動けばOK
動かなければエラーメッセージ次第ですが、1行目の「#!/usr/bin/perl」が異なっていたりするケースや、CGIのファイルアップロード時にバイナリ形式でアップされている可能性(FFFTPなら「オプション」→「環境設定」→「転送1」の設定)、またはサーバ側の規制(ちょっと無いかな?)などを疑って確認します。
トライしてみてください。
No.3
- 回答日時:
ANo.1です。
動くまでがんばってください。
パーミッション(実行属性)はOKですか?
もしそうなら、WebサーバのCGIの実行環境がデフォルトでは出来ない様になっていますね。
1.もしかしたらpublic_html内で出来るかもしれないやり方
「.htaccess」という名前のファイルに以下の3行を記述してCGIと同じディレクトリにアップすると動くかもしれません。
## -----------------------------------------
AddType application/x-httpd-cgi .cgi
Options FollowSymLinks ExecCGI Includes
DirectoryIndex index.html index.htm index.cgi
## -----------------------------------------
2.cgi-binの場合
通常作成しなくてもすでに出来ている場合がほとんどです。
プロバイダからの指示でしたら指示された場所に作成してください。
アクセスの際、URLがわからないので仮に「www.test.jp」としておきます。
このサーバが貸切なら「http://www.test.jp/cgi-bin/index.cgi」でいけるかと…
単なる間借りユーザ(USR01→プロバイダか管理者に聞いてください)なら「http://www.test.jp/~USR01/cgi-bin/index.cgi」かなと思います。
HTML側でリンクを貼るなら
<HTML><BODY><A HREF="http://www.test.jp/~USR01/cgi-bin/index.cgi">リンク</A></BODY></HTML>
をindex.htmlとして置けば良いかと。ただし上記URLは直にたたいて動作するほうになります。
ありがとうございました。しかし何度試してもダメでした。あんまり動かないので、2ヶ月近くもココを放置してしまいました。わざわざ教えていただいたのに、ごめんなさい。
本当に初心者ですので、いただいた回答をあまり理解できませんでしたが、とにかくindex.cgiのファイルを/public_htmlの中にあったフォルダcgi-binに転送し、パーミッションを755にすることはできました。その結果・・・
Script Error
The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file.
http://www.******.net/cgi-bin/index.cgiで上記のエラーが表示されます。ちなみにこのcgi-binの中には別のファイルも入っていて、その別ファイルは問題なく起動します。サーバーは専用(貸切)です。
自分なりにも頭が割れそうなぐらい試しました(実際その後何日か寝込みました^^;)ので、正直あきらめています・・・が、もし簡単に解決しそうでしたら回答をいただければ心よりさいわいです。
No.2
- 回答日時:
こんな感じかと。
#!/usr/bin/perl
use CGI qw(:cgi);
use strict;
my @ans = ('dammy',1,2,1,2,1,2,1,2,1,2);# YESの場合は1Noの場合は2を順番に並べる
my $q = new CGI;
main();
sub main
{
my $func = $q->param('func');
if($func eq 'check'){
check_ans();
}else{
form();
}
}
sub check_ans
{
my $yes;
for my $i(1..10){
++$yes if $q->param($i) eq $ans[$i];
}
if($yes <= 8){
a_page($yes);
}else{
b_page($yes);
}
}
sub a_page
{
print "Location: hogea.html\n\n";
}
sub b_page
{
print "Location: hogeb.html\n\n";
}
sub form
{
#ほげ?を適切に書き換える
print "Content-type: text/html\n\n";
print <<"EOL";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>あんけーと</title>
</head>
<body>
<form name="form1" method="post" action="hoge.cgi">
<p>Q1: ほげ? </p>
<p>
<input type="radio" name="1" value="1">
YES
<input type="radio" name="1" value="2">
NO
</p>
<p> Q2: ほげ? </p>
<p>
<input type="radio" name="2" value="1">
YES <input type="radio" name="2" value="2">
NO</p>
<p>Q3: ほげ?</p>
<p>
<input type="radio" name="3" value="1">
YES <input type="radio" name="3" value="2">
NO</p>
<p>Q4: ほげ?</p>
<p>
<input type="radio" name="4" value="1">
YES <input type="radio" name="4" value="2">
NO</p>
<p>Q5: ほげ?</p>
<p>
<input type="radio" name="5" value="1">
YES <input type="radio" name="5" value="2">
NO</p>
<p>Q6: ほげ?</p>
<p>
<input type="radio" name="6" value="1">
YES <input type="radio" name="6" value="2">
NO</p>
<p>Q7: ほげ?</p>
<p>
<input type="radio" name="7" value="1">
YES <input type="radio" name="7" value="2">
NO</p>
<p>Q8: ほげ?</p>
<p>
<input type="radio" name="8" value="1">
YES <input type="radio" name="8" value="2">
NO</p>
<p>Q9: ほげ?</p>
<p>
<input type="radio" name="9" value="1">
YES <input type="radio" name="9" value="2">
NO</p>
<p>Q10: ほげ?</p>
<p>
<input type="radio" name="10" value="1">
YES <input type="radio" name="10" value="2">
NO</p>
<p>
<input type="submit" name="Submit" value="送信">
<input name="func" type="hidden" id="func" value="check">
</p>
</form>
</body>
</html>
EOL
}
No.1
- 回答日時:
この回答への補足
できませんでした。随分がんばったのですが・・・送信ボタンを押すとエラーが出ます。ちなみにこのindex.cgiだけをpublic_htmlのフォルダ内に入れるだけではダメなんですね。あとindex.cgiをcgi-binという別フォルダを作成してそちらに入れ、別のhtmlファイルでこれを呼び出して?実行しようとしましたが、その方法が全くわからないのでダメでした・・・お時間に余裕ができた際にでも、アドバイスをいただければさいわいです。よろしくお願いします。
補足日時:2006/10/18 23:08これで十分です。ありがとうございます。これから組み込みに挑戦しますが、もしわからなかったら再度質問させて下さい。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
htmlの偽装について質問があり...
-
cgiからsendmailを送信で文字化け
-
/bin/awk '{print $5}'ってどう...
-
○.datから情報を取り出し、○.ht...
-
ファイル名でなく、ファイルの...
-
探索アルゴリズム
-
Image::Magickの入手法
-
ホームページでCGIのフォームを...
-
フォームを再送信しますか?
-
天気の子の映画作りに担当した...
-
CGIを含んだHPデータのサーバー...
-
チェックボックスで複数の値を
-
.htaccessで特定のIPアドレス以...
-
パソコンのメモリー増設方法を...
-
CGIにて構築されている新着情報...
-
C# クラスの配列の並び替えに...
-
質問ページ(CGI)に行く時にフ...
-
CGIゲーム設置について
-
apacheでPerl CGIが作動せず、5...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで集計したい。
-
apacheでPerl CGIが作動せず、5...
-
フォームを再送信しますか?
-
(フリーの)ツリー掲示版CGI、...
-
ホームページでCGIのフォームを...
-
/bin/awk '{print $5}'ってどう...
-
CGIって何ですか?簡潔に教えて...
-
cgiからsendmailを送信で文字化け
-
入力フォーム(電話番号)
-
CGI.pmはもう古い!?
-
フォームメールを受信すると文...
-
古ーくからフリーのtree.cgi掲...
-
チェックボックスでのvalue値の...
-
誕生日占いをプログラムで作成...
-
cgiファイルで構成された検索結...
-
VBAで条件から範囲を指定して色...
-
Perl 別ドメインのファイル存在...
-
.htaccessについて
-
number 改行が追加できない
-
JQUERYでウェブのフォームから...
おすすめ情報