トップページ⇒php
1001コメント328KB

CGIだけど、なんか質問ある? Part 8

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん02/09/22 23:15ID:???
CGIの運用に関する質問スレッドです。

※CGIは特定の言語に依存するものではありません。

※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
  ↓
  Perl 初心者コーナー Part16
  http://pc.2ch.net/test/read.cgi/php/1032070299/l50

過去ログ・関連スレッドは >>2
0809nobodyさん02/12/07 00:14ID:JEYT/ti0
ttp://pc.2ch.net/test/read.cgi/php/1032704121/-100

このURLってread.cgiはどのように引数を受け取っているの?
相対パスの設定はどのように行なっているの?
0810nobodyさん02/12/07 00:29ID:???
きしゅつ
0811nobodyさん02/12/07 06:30ID:???
>803

perl -d しろ。

#perlだったらだが。
0812nobodyさん02/12/07 11:28ID:RaxMjdVa
質問です。
携帯のau用に着メロのダウンロードCGIを設置しようと思ったのですが、上手くいきません。
CGIは、
ttp://www.kt.rim.or.jp/~marca/ezget/index.html
ここの物を選んだのですが、設定がまずいのか動作していないようです。
設置しているのはBIGLOBEの自分のHPスペースなので、そっちの方は問題ないのですが‥。
どなたかお分かりになる方、ご教授頂けませんでしょうか?
CGIに触れたのは初めてなもので、正直よく分かりません‥。オマケに自分はauを持っていないもので‥。
0813nobodyさん02/12/07 11:43ID:???
>>812
そこのサイトのサンプルは動くのか?

エラーは出るのか?
081481202/12/07 11:54ID:RaxMjdVa
>>813
PC上からアクセスしても、意図する動作はしないようです。
自分で設置したものにアクセスすると、filename requiredと表示されます。
読んで字のごとくなのですが、ここからが詰まってます。
PC上でezWebをエミュレートできるツールでもあれば、auが無くても動作確認できるのでしょうが‥。
0815nobodyさん02/12/07 12:01ID:???
<A TASK="GOSUB" DEST="ez.cgi?f=tahi.pmd">ダウンロード</A>

見たいなやつを書いてないんじゃない?
081681202/12/07 12:11ID:RaxMjdVa
>CGIは自分のディレクトリ下からのみ起動可能です。
との事なので、public_htmlディレクトリの下にindex.htmlを置いて、そっちに、

<A TASK="GOSUB" DEST="ez.cgi?f=ファイル名">ダウンロード</A>

を置いてます。
別にcgi-binディレクトリを作り、その下にCGIを置いているのですが、
上記の記述だと「ダウンロード」とただ表示されるだけで、リンクが貼られません。
直接CGIにアクセスすると「filename required」となります。
置いているのは着メロなのですが、どうすればCGIを通してauでDL出来るようになるのでしょうか‥?
0817813=81502/12/07 12:19ID:???
<A TASK="GOSUB" DEST="../cgi-bin/ez.cgi?f=ファイル名">ダウンロード</A>

こういうことかな? サーバの設定で .. は使えないかも知れないから

http://BIGLOBEの自分のHP/cgi-bin/ez.cgi?f=ファイル名

にしたほうがいいかも。
081881202/12/07 12:59ID:RaxMjdVa
>>817
<A TASK="GOSUB" DEST="http://cgi.www5d.biglobe.ne.jp/~自分のID/cgi-bin/ez.cgi?f=ファイル名">ダウンロード</A>
index.htmlにこう記述しているのですが、これだと>>816の通りになってしまいます。
やはりauもないと駄目なのでしょうか‥?
0819813=81502/12/07 13:04ID:???
そうしたら、5行目は設定してる?

$datadir = './data';

CGIファイルから見て、ダウンロードさせたいファイルのあるディレクトリの設定
082081202/12/07 13:37ID:YhJyx1dy
この際晒してしまいますが、
http://cgi.www5d.biglobe.ne.jp/~coolier2/cgi-bin/ez2.cgi?f=s_moon2_au.pmd
ここまでは漕ぎ付けました。
ただ、auが無い為チェックできないので、これであってるのかどうかが分かりません。
記述を見る限りCGIにはアクセス出来ているようなのですが、
携帯からDL出来るのかどうかが分かりません。
CGIの中身を見てもチンプンカンプンだし‥。
0821813=81502/12/07 13:56ID:???
489バイトのファイルがPCからDLできましたが、わたしも携帯持ったことないのでわかりません。
なんで持ってないau用のDLページを設置するの?
082281202/12/07 14:03ID:YhJyx1dy
>>821
着メロのHPをやっているのですが、auは機種によってDL出来なかったりするそうです。
ただ、ダウンロードCGIを置くと、16和音対応なら大体どのauの携帯でも聴けるようになるそうなので、
だったら置いてみようかなと思って‥。
とにかく、色々やってみようと思います。ありがとうございました。
0823nobodyさん02/12/07 21:12ID:???
>>808
それ、レンタル鯖でやったらたぶんたたき出されるよ。
0824nobodyさん02/12/07 22:48ID:???
別ウィンドウから親ウィンドウのページ(CGIページ)を更新したいのですが、
URL欄にパラメータを晒さないで更新することって不可能しょうか。
JavaScriptでやろうとするとPOSTが使えないので、?a=b&c=d って感じになってしまいますよね?
0825nobodyさん02/12/07 23:10ID:???
>>824
できるよ。

JavaScript使ってPOST送信することもできるし。。。でも板違いだからね!
0826nobodyさん02/12/07 23:37ID:yo5a65Nq
カレント下のディレクトリに移動してpwdで表示させたいんですが、
以下のスクリプトでできません。なぜだろう。

$dn=0;
chop($ls=`ls`);
@DIR=split(/\n/,$ls);
$lim=@DIR;
while($dn<$lim){
chdir './$DIR[$dn]/';
print `pwd`;
$dn++;
}
082730202/12/07 23:44ID:???
>>826
Cwdモジュール使おうぜ。

use Cwd;
$cwd = cwd;
# $cwd = カレントディレクトリ
082882602/12/07 23:50ID:???
>>827
ディレクトリに移動できていないようなんだよね。。
0829nobodyさん02/12/07 23:58ID:???
chdir $DIR[$dn];
083082602/12/08 00:04ID:???
あ、ほんとだ。ありがとです。
0831nobodyさん02/12/08 00:17ID:1lV1fu3e
プログラミング板から移って来ました。
perl(5.00503)のCGI.pmで

CGI::ReadParse(\%FORM);

とやった後に、$FORM{'〜'}の中身をどうやっても空にすることが
できないんだけどこれって仕様?

CGI::ReadParse(\%FORM); #この時点で$FORM{'url'}に値が入る
$FORM{'url'}='';
print("Content-type: text/html\n\n");
print($FORM{'url'}); #空になっていない。
0832nobodyさん02/12/08 00:25ID:???
>>831
悪い事は言わんから、いまいちどソースを確認すること
083382402/12/08 01:37ID:???
>>825
ありがとうございます。調べたらPOST送信の方法わかりました。
別ウィンドウから親ウィンドウの関数呼び出してPOST送信、でやってみます。
ちなみに同じことをCGIだけではできないってことでいいんでしょうか。
083482402/12/08 02:46ID:???
板違い・・すみません、逝ってきます。
0835nobodyさん02/12/08 18:20ID:???
@test= split(/\//, $ENV{'PATH_INFO'});
で -w のオプションつけると
Use of uninitialized value in split
と出ます 何で出るんでしょう?
0836nobodyさん02/12/08 18:50ID:???
環境変数 PATH_INFO が無いから。
0837nobodyさん02/12/08 20:42ID:???
>>835
意味がわからん。
質問と答えを同時に書いちゃってるよ。

>Use of uninitialized value in split
>と出ます 何で出るんでしょう?
Use of uninitialized value in split だからでしょ?
0838nobodyさん02/12/09 01:56ID:???
今度から「エラーメッセージ=答え」の質問には回答しないってことにしね?
0839nobodyさん02/12/09 02:53ID:q8HyJSpD
すいません、特定のcgiファイルにだけssiを使用可能にしたいので
.cgi2という拡張子だけcgiとssiの両方を通すようにサーバー側で設定しました。
これって何か問題あるんでしょうか?
084083902/12/09 03:09ID:q8HyJSpD
と思ったらcgi2に拡張子変えたらcgiがサーバーエラーになって動かなくなった。

ssiを通すと動作が重くなると聞いたので、
やはり特定のcgiファイルにだけssiを使えるようにしたいんですが
何かいい方法はありませんか?
お願いします。
ちなみにサーバー側の設定はコントロールパネルを使ってブラウザ上から
するようになってます。
0841nobodyさん02/12/09 03:20ID:???
SSIを通すってのが意味不明なんですが
084283902/12/09 03:51ID:q8HyJSpD
ファイルをssiを使ったものとして認識させる、って意味です。
すいません、たぶん勘違いも多いと思います。
084383902/12/09 04:06ID:q8HyJSpD
質問の仕方がマズかったかも知れません、
あれから色々試してわかったことを含めて質問し直します。

cgiで表示させるニュースサイトにssiでアクセスログを取ろうとしてます。
ssiの使用はサーバーに拡張子を登録しないといけないのですが
「.cgi」という拡張子を登録しようとすると、すでに使用されています、
とエラーになる(当たり前か)

この場合どうあがいてもcgiファイルを呼び出したときのログを取るのに、
ssiのアクセスログは使えないのでしょうか?
0844Name_Not_Found02/12/09 04:47ID:???
>>843
やろうとしていることが理解不能。
そのSSIのアクセスログってどんなのか説明してみ?

0845nobodyさん02/12/09 06:33ID:???
SSIとCGIの記述言語が同じならいっしょくたにしちゃえばいいじゃん
084683902/12/09 06:36ID:q8HyJSpD
説明下手ですいません、、、。僕自身ssiについてよくわかっていないもので。

えーとアクセスログはcgiなんですけど、それにssiモードっていうのがあって
そちらを使おうとしてるんです。urlはココです。

http://air.vis.ne.jp/at-works/access/readme/detail.html#detail2
0847nobodyさん02/12/09 10:41ID:???
.shtml に設定してもダメ?
0848nobodyさん02/12/09 11:09ID:???
CGIで
print "<!--#exec cgi="hoge.cgi"-->";
とかやってもダメだよ。(Apache2なら出来ないことも無いが全部CGIにすればいいだけの話)
0849nobodyさん02/12/09 11:18ID:???
"〜"内の"は\"にしないとダメだと思いマース


と揚げ足取ってみるw

まあどの道ダメだけど。
085083902/12/09 11:34ID:???
>>848
わかりました、元々SSIのことはよーわからんのでいじるの止めときます。
ていうかその説明聞いて無理だとわかりました。
0851nobodyさん02/12/09 11:35ID:???
>839
CGIの中でそのままアクセスログを取ればいいだけだろ。
085283902/12/09 11:44ID:???
>>851
はい、アクセスログは846のやつを使ってるんですがそのログデータに
呼び出したCGIから書き込むようにしたいと思います。
0853nobodyさん02/12/10 00:36ID:???
cgiの負荷をローカルで調べたいんですけど、どうすればいいんですか?
(環境はWin2K+Anhttpd+ActivePerl5です)
できないですか?
0854nobodyさん02/12/10 00:51ID:???
>>853
ローカルにサーバ立てればいいだろ???
0855nobodyさん02/12/10 08:51ID:???
すいません、配列内の全く同じ値をひとつにまとめるということは出来ないんでしょうか?
たとえば

@test=("たこ","いか","たこ","はまち","あなご","はまち","はまち","たこ","たこ"-----その他続く);

とあった場合に

@test=("たこ","いか","はまち","あなご",-----その他続く); #---順不同でかまいません

という具合に直すにはどうやったらいいんでしょうか?
よろしくお願いします。
0856nobodyさん02/12/10 09:29ID:???
>>855
ttp://www.din.or.jp/~ohzaki/perl.htm#ArrayUnique
085785502/12/10 09:50ID:???
>>856
いとも簡単に出来ました、ありがとうございます。
0858nobodyさん02/12/10 10:14ID:bx+i+tz7
グローバル変数とローカル変数の名前のつけ方に
どのような工夫をしてるのかお前らなりの意見を述べよ。
例)グローバル変数は"g_"で始める
0859nobodyさん02/12/10 10:48ID:???
グローバル変数は全部大文字。
基本的にはグローバル変数は使わんけどね。
0860nobodyさん02/12/10 11:28ID:???
全部大文字にすると記号定数みたいで嫌だな・・・
0861nobodyさん02/12/10 12:26ID:???
>>859
それもらったわ いいね
今まで区別もなしに使ってたよ。
0862nobodyさん02/12/10 17:35ID:???
>>860に同意
C系の人は…
0863nobodyさん02/12/10 17:42ID:???
1文字目を大文字
0864 ◆hMJAPH9PWA 02/12/10 20:29ID:???
グローバル変数なんてほとんど使わないけど、使うとしたら>>863と同じかな。
0865nobodyさん02/12/10 22:19ID:???
>>859
マクロ定数みたい。
0866nobodyさん02/12/10 22:22ID:???
グローバル変数は"g"ではじめる。
ローカル変数は"the"ではじめる。
メンバ変数は"m_"ではじめる。
Cマガにあったのを一部使ってるが、気に入っている。
0867nobodyさん02/12/10 22:50ID:3ZprtexE
★最新情報★
★http://yahooo.s2.x-beat.com/linkvp/linkvp.html★
086812302/12/11 00:01ID:MBkMmHdK
IモードでCGIを使って電話をかける方法が分かりません。
友達は簡単だといってたのですが。
0869nobodyさん02/12/11 00:10ID:???
>>858
悪い事は言わん。一回死んでみろ。
0870nobodyさん02/12/11 01:43ID:???
>>869
それは>>868へのレスか?
0871nobodyさん02/12/11 02:23ID:???
$HEAD="INSERT INTO USER VALUES ('";
$SEN="aaaa','bbb','cccc','dddd','eeee','ffff";
$END="');"
$RES="$HEAD$SEN$END", "\n";
とかして$RESを出力させると"');"が変なところに出るんだけど、
なぜだろう。端末が表示できなくて折り返したところに出るんだよね。
0872nobodyさん02/12/11 02:36ID:???
>>871
3行目の末尾にセミコロンがないけど…
それ直してローカルで実行してみたけど、普通に1行で表示されたよ。(IE6)
0873nobodyさん02/12/13 14:25ID:MEORzHg9
あるcgiを実行すると、ブラウザの下に
「実行しましたが、ページでエラーが発生しました。」と出ます…。
perlスクリプトのエラーを探すcgiで探してみたのですが、わかりません…
このままでも大丈夫なんでしょうか…?
0874nobodyさん02/12/13 14:46ID:???
IEのステータスバーに出るエラーメッセージの事ならJavaScriptのエラーじゃねーの?
0875nobodyさん02/12/13 16:10ID:0xps+Hva
>>874
そうなんですか?じゃあそっちの方チェックしてみまつ
ありが�d
0876nobodyさん02/12/13 16:36ID:iG+3sspL
誕生日と名前フォームデータ($yyyy,$mm,$dd,$name)を
CSVで貯めるのですが、その際、CSVデータが誕生日$yyyy,$mm,$ddで
ソートしたいのですがいつソートするんでしょう?

1回そのまま書き込んで、もう一回呼んで、ソートしかないですか?
書き込む前にソートできますか?
0877nobodyさん02/12/13 18:06ID:???
>>876
マルチは氏ね
0878nobodyさん02/12/13 18:58ID:iG+3sspL
まるちってなんだ?
0879nobodyさん02/12/13 19:40ID:???
和牛商法のことだよ
0880nobodyさん02/12/14 11:10ID:???
霜降りまんせー?
0881nobodyさん02/12/14 20:21ID:???
http://www.kent-web.com/bbs/epad/epad.cgi
ez j au i pcとか端末によって出る場所を変えたいのですが
0882初心者02/12/14 21:59ID:KvUqkI+X
cgiがアップロードできたり、できなかったりします。
プログラムも書き換えたりしていないのです。
環境はMacです。フェッチを使っています。
ものすごい初心者厨ですみません。
0883nobodyさん02/12/14 22:12ID:???
>>882
それだけじゃわからん。
せめて、どうできないのかぐらいは書いてくれ。
0884nobodyさん02/12/14 22:35ID:???
>>882
初心者な事を謝る必要は無い。
まともに質問できないことを詫びろ。

>アップロードできたり、できなかったりします
ネットワークが不安定なんじゃないか?
しょっちゅう切断されるとか。
0885nobodyさん02/12/15 11:50ID:???
>>882
> フェッチを使っています。

窓から投げ棄てろ
0886nobodyさん02/12/15 13:23ID:???
掲示板を設置しているんですけど普通に動作してるのに時々500 インターナルサーバーエラーが出る時があるんですがこれは何故ですか?
0887nobodyさん02/12/15 13:42ID:???
処理が重いんだべ
0888nobodyさん02/12/15 14:31ID:KknhLQGQ
CGI初心者ですが、C言語でCGIプログラムをしようと思っております。
そこで、C言語のソースをCGIにコンパイルするコンパイラーはあるん
でしょうか?ちなみに環境はwindowsです。よろしくお願いします。
0889nobodyさん02/12/15 14:33ID:???
>C言語のソースをCGIにコンパイルするコンパイラー

・・・
0890nobodyさん02/12/15 14:40ID:KknhLQGQ
質問が悪かったみたいです。すみません。
それじゃC言語でCGIを作るにはOSはUNIXじゃないと無理なんで
しょうか?
0891nobodyさん02/12/15 15:33ID:???
>>890
Windowsのサーバで使うならWindowsでコンパイルしないといけない。
VisualC++とかBorland Cコンパイラーとか使う。
間違ってもWindowsでコンパイルしたのをUNIXで動かそうとは思わないように。
0892nobodyさん02/12/15 15:54ID:KknhLQGQ
>>891
ありがとうございました。
コンパイルすると、exeファイルができますよね。
その後、どのようにCGIのようにホームページ上で動かせばいいんですか?
もし、ご存じだったら教えてください。よろしくお願いします。
何度も質問すいません。
0893nobodyさん02/12/15 16:11ID:???
>>892
HTTPDによって違う。
IIS、AnWEB(AnHTTPD)、Apacheそれぞれで設定が違う。
詳しくは知らん。
0894nobodyさん02/12/15 17:09ID:KknhLQGQ
>>893
ありがとうございました。
一応AnWEB(AnHTTPD)を使ってしようと思っております。
0895nobodyさん02/12/16 02:59ID:???
SSIでCGIを起動しようとしているのですが
telnetでsyntax OKがでても実行すると
[an error occurred while processing this directive]
が出ます。文法も何度もチェックしたのですが間違いが見つかりません。
何か見落としているのだろうか?
0896nobodyさん02/12/16 03:05ID:???
>>895
自己解決しました。
0897nobodyさん02/12/16 06:38ID:???
>>895-896
濡れもそのエラーでて困ってたんだけど解決法をしえて(;´Д`)
0898nobodyさん02/12/16 10:09ID:???
ヘッダ吐いてないから、とか?
0899nobodyさん02/12/16 18:18ID:???
そのコマンドが使えないから、とか?
0900奈美 ◆GIyFjXJ4X2 02/12/17 14:37ID:???
すみません、初歩的な質問なのですが同じ鯖に別の種類のCGIをupする時
「info」等が上書きされてしまいます。
この場合フォルダーを作りそれぞれ格納すれば良いのでしょうか?
よろしくお願いします。
0901nobodyさん02/12/17 15:03ID:???
>>900
分かってるんならまずやってみれ。
0902nobodyさん02/12/17 23:44ID:IKEJsjLp
(hoge|geho){2}
は、
hogehoge gehogeho hogegeho gehohoge
を指してるんでしょか? それとも
hogehoge gehogeho
だけでしょか?
0903nobodyさん02/12/17 23:47ID:???
>>902
やってみれ。

#!perl
$q = qr/(hoge|geho){2}/;
@test = qw ( hogehoge gehogeho hogegeho gehohoge );

@result = grep { /$q/ } @test;
print join("\n", @result);
exit;
0904nobodyさん02/12/19 02:44ID:6brHe4qs
board.cgiのURLと言うのは
cgiが置いてあるURLを入力すればいいんですよね?
0905nobodyさん02/12/19 02:51ID:???
>>904
なんでここで同意を求めるの?
0906じょ02/12/19 11:15ID:???
質問です。
GATEXってCGIのセキュリティってどうです?
高い?低い?
0907nobodyさん02/12/19 17:21ID:???
PhotoBBSというCGIのセキュリティは漏れ漏れ
0908nobodyさん02/12/19 23:11ID:ZsaWrRnV
mother
hanako
father
taro
grandfather
kenzo
grandmother
hana

上記のようなテキストファイルがあります。
これを奇数番目をキーとし、偶数番目を値とする連想配列にしたいのですがどうしたらいいでしょうか?

つまり、
motherは、hanako
fatherは、taro
grandfatherは、kenzo
grandmotherは、hana
としたいのです。ご教授ください。
レス数が900を超えています。1000を超えると表示できなくなるよ。