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

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

■ このスレッドは過去ログ倉庫に格納されています
0001ななし ◆E6qQ.htN7o 03/01/03 02:56ID:H5ub4PWW
CGIの運用に関する質問スレッドです。

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

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

過去ログ・関連スレッドは >>2-5 あたりに
0313nobodyさん03/02/09 04:01ID:???
私もPHP入れたらPerlがおかしくなった事あったけど
私の場合は削除はされてなかったんで、パスの指定し直したら直った。
まぁ、Perl再インストールすれば大丈夫じゃないの?
ついでに最新版確認してきてね。
0314nobodyさん03/02/09 04:55ID:???
うちはAN HTTPDで使ってるけど、PHP入れても別におかしくはなってないよ。
ちなみに他ディレクトリで解凍してから、C:\php にコピーして設定という方法で
インスコした。
0315nobodyさん03/02/09 05:32ID:???
>>314
同様の環境。
ただし、perlとphpは同じドライブに入ってないけどw
0316nobodyさん03/02/09 23:57ID:Xc8YBGxY
質問です。
今までPerlでCGIやってたんですが、C言語でCGIを動かそうと思ってます。
色々サイト巡ってとりあえずCygwinをインストールしました。
しかし、Apacheの設定がどうしても分かりません。
Windows+ApacheでC言語のCGIを動かすための説明があるサイト等、
紹介してもらえないでしょうか。
0317nobodyさん03/02/09 23:59ID:???
>>316
拡張子無しを実行条件にしたらどうだい?
0318nobodyさん03/02/10 00:05ID:???
>>316
Perlで書いたものが動けば問題なく動くはずだけど。

コンパイラはcygwin上のgccよりもVC++やBCCの方がいいと思う・・・
0319nobodyさん03/02/10 00:18ID:VClzLIdP
レス多謝です。

>>317
すみません、不勉強なもので意味が分かりませんでした;
差し支えなければ、もう少し具体的に教えて頂けないでしょうか。

>>318
あ、そうだったんですか・・・(恥
BCCはC言語の勉強に前から使ってたんですが、
どうやってCGIとして動くようにすればいいのかが分からず・・・
gccだと gcc -o test.cgi test.c みたいに実行するようなこと書いてあったんですが
BCCの場合はどうすればいいんでしょうか。
0320nobodyさん03/02/10 00:23ID:???
>>318
bcc32のオプションが分からないから答えられないけど、できあがった実行ファイルの拡張子を.cgiにすればよいのでは?
0321nobodyさん03/02/10 00:27ID:VClzLIdP
>>320
printf("Content-type: text/plain\n\n");
printf("Hello, World!");
をBCCでコンパイルし、.cgiにリネームしてウェブ鯖で実行したところ、
ダウンロードダイアログが開いて、
落としたのは「Hello, World!」と書かれたテキストファイル.cgiでした・・・
何故ブラウザで開かれないんでしょうか・・・
0322nobodyさん03/02/10 00:28ID:???
>>321
>printf("Content-type: text/plain\n\n");
原因。
0323nobodyさん03/02/10 00:28ID:???
>>321
Perlで同じようなものを作ったときは問題なく表示されるの?
0324nobodyさん03/02/10 00:32ID:???
ああぁぁぁぁぁああっ
すみません、書き込み直後気付いてtext/htmlにしたらちゃんと出来ました。。
皆さんどうもありがとうございました!
0325nobodyさん03/02/10 00:34ID:???
>>323
はい、Perlだとtext/plainでも表示されたんで、すぐに思い付けませんでした。。。
0326nobodyさん03/02/10 00:34ID:???
text/plainなら大抵の環境でプレーンテキストとして開かれると思うけど^_^;
0327nobodyさん03/02/10 00:35ID:???
>>325
そういう部分は言語によらないはずだよ。
打ち間違わなかった?
032832503/02/10 00:44ID:???
打ち間違いは多分無いと思いますけど・・・
手持ちの「Per;/CGI入門教室」とか言う本も、
最初のとこはtext/plainでやってます。。。
0329nobodyさん03/02/10 03:21ID:???
>>328
ブラウザの仕様だと思われ。
IEではダウンロード、NN7,OPERA,Lynxだと表示。
0330nobodyさん03/02/10 04:33ID:???
>>329
でもPerlではならないって言っているよ。
打ち間違いとしか思えない・・
0331nobodyさん03/02/10 11:46ID:???
MIMEタイプをプレーンテキストにすると、ダウソになることあるよ、perlでも。
0332nobodyさん03/02/10 18:34ID:???
2つのperlファイルがあるんですけど
両方とも1つのcgiを改造して作成しました。

それをローカルでテストすると上手く動くのに
サーバーにアップしたら片方はエラーで動かないんです。

もちろん1行目やパーミッションも同じように設定してます。
何が原因なんでしょうか・・・。
0333nobodyさん03/02/10 19:06ID:???
>>332
それだけで分かれというほうが無理だろ……
0334nobodyさん03/02/10 23:02ID:???
>>332
>もちろん1行目やパーミッションも同じように設定してます。

むしろそれが原因ではないのかと。
033531203/02/11 01:19ID:???
>>312でperl.exeが消滅した件ですが、理由がわかりました。
消滅する前にとあるソフトをインストールしたんですが、そのとき
インストールする前にインストーラーの
「インストールが完了していません。続けますか、やめますか?」
のエラーダイアログが出てそのメッセージをキャンセルしたんですよ。
それがactive perlをインストールした時のものだったわけです。
つまり、前のactive perlが完全にインストールされてなくて、
(インストール時にPCが固まったか何かで)半端なまま使ってたって事です。
それでインストールをキャンセルしたために、使ってたperl.exeが削除
されてしまったって事ですな。
033631203/02/11 01:24ID:???
と言う訳でactive perlを再インストールして解決しました。

>>313
バージョンは5.6.1 build 633 と5.8.0 build 804 ってのが
あったんですが、違いがよく分かんないのでどっちでもいいやって
事で5.8.0 build 804 の方をインストールしてみました。
http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl
0337nobodyさん03/02/11 22:44ID:VNfk5QCU
DBと連携するCGIがあるんですけど、
今度セキュリティレベルを高める、という話になりました。
で、やりだまに上がったのがCGIのファイル中に記述してあるDBユーザ/パスワード。
これを別ファイルにするとか言ってるんですけど、意味あるんでしょうか??
皆さんは、こういう場合どうやってますか?
教えてくださいませ。
0338nobodyさん03/02/11 22:50ID:???
>>337
別ファイルにして、それを外部から参照できない場所(ドキュメントルートより上位)に
置けばいいんでない?
0339nobodyさん03/02/11 23:07ID:VNfk5QCU
ようわからんのですが、cgi-binの中なんて普通参照できないですよね。
それともできちゃうもんなんですかね?
0340nobodyさん03/02/11 23:17ID:???
>337
たとえば、SuEXECを導入しているとすると意味がある。
実行ファイル *.cgi のパーミッションは701にして、
それ以外の *。pl などは600にする。DBに渡すパスワードとかはこの*.plの方に記述しておけば、
ゲストユーザーからは*.plを実行したり読み出したりする権限はないので、
セキュリティは保たれる。
034133703/02/11 23:50ID:VNfk5QCU
なるほど。
よく理解できました。ありが�d
0342さ迷える子羊03/02/12 02:22ID:???
地域サイトを作成して、そこのメール会員を募集し
毎週メールを送ることになりました。
サーバは専用cobaltRAQ4でWEBと併用、言語はPerlなのですが、
下記のように考えております。
自分のいくつかあるメールアドレスに計2000通とか送って実験したのですが
結構時間がかかります。
効率のよい方法はありませんでしょうか?
qmail,Postfixにするとかではなく、あくまでもperl内で。

for(@member){
会員の情報をげっと = split();
$mail = ヘッダと内容を作る;
&jcode::convert(\$mail,"jis","sjis");
if( !open(MAIL,"|$sendmail -t") ){ &error('sendmail'); }
print(MAIL $mail);
close(MAIL);
}
0343nobodyさん03/02/12 03:58ID:???
perl内で出来ることなんて無いんじゃないかな。
できても微々たるものかと。
大きそうなのはconvertくらい?

qmailやpostfixが嫌ってことは、sendmailでやりたいってことでいいのかな?
smtpfeedとかいうのがあるから調べてみるといいかも。
0344さ迷える子羊03/02/12 13:23ID:???
>>343 さんレスありがとうございます。
qmail、postfix、smtpfeed等ですが嫌いなわけではないのです。
専用サーバなのにsuを頂けない状態なので、
インストールは「お金を払って頼む」しか手段がありません。
以前ImageMagick入れてもらうだけで10万近くかかりました。
ですので、ソフトのインスト−ルは見合わせております。
個人のお金ではないのですが、ちょっと高すぎて躊躇します。
0345nobodyさん03/02/12 15:43ID:???
>>342
> if( !open(MAIL,"|$sendmail -t") ){ &error('sendmail'); }

自力で SMTP 喋るようにすれば、少なくとも sendmail を
立ち上げる負荷は無くなる。
Socket.pm (Perl の標準モジュール) くらいはサーバにも
入ってるだろ?
0346さ迷える子羊03/02/12 16:03ID:???
>>345
ご教授ありがとうございます。早速調べて見たいとおもいます。
0347nobodyさん03/02/12 22:50ID:???
>>345
絶対Socket=SMTPライブラリ・・・いや、メール送信ライブラリと勘違いしてるぞ。
0348nobodyさん03/02/13 00:10ID:???
>>347
?
0349nobodyさん03/02/13 05:10ID:???
>>347
Socket使って自力(sendmailに頼らずに)でやれという意味だと思うけど。
0350nobodyさん03/02/13 08:45ID:???
>>349
わかってる。それを>>346は>>347だと勘違いして今頃失望している頃だろうと言っている。
035134603/02/13 13:58ID:???
use Socket使ってやるのではないのですか?
PORT番号を取得してソケット生成して・・・・・
って、あまりまだ調べてないのですが。
0352nobodyさん03/02/13 15:26ID:???
>>351
その方向で合ってるよ。
ちなみに SMTP のポート番号は通常 25。
詳しくは RFC 2821 な。
ttp://www.puni.net/~mimori/rfc/menu.html
0353nobodyさん03/02/13 16:42ID:???
>>350
ならば「誰が」を省略するなよ。紛らわしい。
0354nobodyさん03/02/13 17:41ID:???
読み手の読解力が無いだけでしょ
0355nobodyさん03/02/13 20:59ID:???
>>353
禿同
>>354
どっちにもとれるだろ。読解力ないの?
0356nobodyさん03/02/13 21:20ID:???
>>355の中の人も大変だな。
0357nobodyさん03/02/13 21:25ID:???
>>355
文脈から推測する力も無いのか・・・
哀れだ
0358nobodyさん03/02/13 21:32ID:???
プログラムの前にまず国語からはじめような。
0359nobodyさん03/02/14 03:36ID:???
>>357
文脈から推測してもどちらとも取れるが。
0360nobodyさん03/02/14 03:36ID:???
>>346
IO::Socket便利だよ。

でもPerlの方が重い予感。
専鯖ならともかく、共有鯖だったらやんないでね。
0361nobodyさん03/02/14 03:37ID:???
「勘違いしてるぞ。」が「勘違いするぞ。」ならば分かるが。
0362344=34603/02/15 04:08ID:???
>>360
さらなる情報ありがとうです。後日調べたいと思います。

>専鯖ならともかく、共有鯖だったらやんないでね。
明記の通り専用サーバですのでガンガンメール送ってみたいと思います。
ってほど会員増えないと思いますけど。
ちなみに戦闘力調べたら、1分で250通前後でした。
しかしながら4種類のメールに対して複数送っているので、
実際はそれ以下か・・・・・(´・ω・`)ショボーン
0363nobodyさん03/02/15 07:53ID:???
>>359,>>361
代弁ありがとう。
0364nobodyさん03/02/15 09:31ID:???
下らない論争で随分消費してますね(´ё`)
0365nobodyさん03/02/15 11:10ID:???
>>364-365
その筆頭。
0366nobodyさん03/02/15 13:04ID:WKdky/xD
read.cgiって何ですか?
0367nobodyさん03/02/15 14:20ID:PUb1GMYC
掲示板を作っています。
書き込みをユーザーが削除できる機能を作っていますが上手く行きません。
sub delete{
local($no,$name,$email,$dai,$comment,$date,$ip,$host,$pw);
if($in{'no'} eq '' || $in{'pwd'} eq ''){&error("パスワードまたは削除Noが記入漏れです");}

open(IN,"$logfile")||&error("ファイルを開けませんでした");
flock(IN,2);
@data = <IN>;
close(IN);
$flag=0;
@new=();
foreach(@data){
($no,$name,$email,$dai,$comment,$date,$ip,$host,$pwd) = split(/<>/);
if($in{'no'} == $no){$flag=1; $PWD=$pwd;}
else{push(@new,$_);}
}
if($flag == 0){&error("該当する記事がありません");}
if($PWD eq ''){&error("その記事にはパスワードが設定されていません");}
$match = ("$in{'pwd'} = $PWD");
if($match ne 'yes'){&error("パスワードが違います");}
open(OUT,">$logfile")||&error("削除に失敗しました");
flock(OUT,2);
print OUT @new;
close(OUT);
}
何処が悪いかご指摘をお願いします…
0368nobodyさん03/02/15 14:24ID:???
>>367
正直、読めというのか。そのインデントも減った暮れもないコードを。

どこがうまく行ってないかくらい自分でもわかるだろ。その辺を分析してエッセンスだけを提示してくれよ。
0369nobodyさん03/02/15 15:47ID:???
$match = ("$in{'pwd'} = $PWD");
if($match ne 'yes'){&error("パスワードが違います");}


if ( $in{'pwd'} ne $PWD ) { &error( "パスワードが違います" ); }
0370nobodyさん03/02/15 21:49ID:???
まあまあ。インデントはHTMLの都合上、省略されたりしてうまく表示できないわけだから
しょうがないよ。
でも「上手くいきません」は勘弁な。どう上手くいかないのかを必ず書くこと。
こういう動作を期待していたが、いざ実行してみるとこんな動作をしてしまった、みたいに
書ければとてもいい。
0371nobodyさん03/02/15 22:02ID:???
いやもう、必ず「パスワードが違います」と言われちゃうんだろ?
>>369を参考にな。
0372nobodyさん03/02/15 22:23ID:???
おまえら優しすぎ。
0373nobodyさん03/02/15 22:46ID:bgMyjtsw
CGI(perl)が動かん。OS Win2000。DOS窓なら動くってのにブラウザではびくともしない。けっ
ActivePerlをインストールしてHttpdを入れた。Httpdはドキュメントルートと実行プログラムの位置とかなら設定したけど、他のごちゃごちゃしたところとかはいじってない。
プロパイダはYahoo!BBを使ってる

heloo World!っていうのを表示する簡単なcgiで、ソースは、
#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
print "<H2>Hello! WORLD</H2>\n";
print "</BODY></HTML>\n";
なんだが。これをブラウザでローカルテストするとHTTP 500 - 内部サーバー エラー になるんですが(´ー`)? 一体原因はどこよ?
0374nobodyさん03/02/15 22:49ID:/6YfHvht
/usr/local/bin/perlにPerlが置いてないとか
"Content-Type"とか
0375nobodyさん03/02/15 23:07ID:???
その"Httpd"の名前を具体的に書けよ
0376nobodyさん03/02/15 23:09ID:???
500か
じゃあウェブサーバーの問題ではなさそうだな。

多分>>374のどれか。たとえばActivePerlは標準では\usr\local\binにはインストールされない。
0377nobodyさん03/02/15 23:24ID:???
>>374
「Content-Type」の大文字小文字は問われません。

>>373
CGIでPerlを呼ぶ設定にしてある?
037837303/02/15 23:41ID:bgMyjtsw
>>374
perlの位置はC:\Perl\bin\perl.exe から C:\usr\local\bin\perl.exe に直した。
それと同時にHttpdの設定も変更したけど意味無し

>>375
AN HTTPD Daemon Version 1.42

>>377
>>373以外にやることありますかね(´ー`)?
0379nobodyさん03/02/15 23:55ID:???
>>373

拡張子CGIファイルでPerlを実行するように設定しておけば
一行目に関係なく動く(かもしれない。)

そうしていないなら一行目の
#!/usr/local/bin/perl

を#!C:\usr\local\bin\perl

にすればうごく(かもしれない)
0380飛石3連休 ◆8772606082 03/02/16 00:00ID:???
ANHTTPDの設定でPerlへのパスがあってれば、
スクリプト内部の #!/usr/local/bin/perl
をチェックしない設定がないかい?
CGIファイルの拡張子は?
0381飛石3連休 ◆8772606082 03/02/16 00:02ID:???
追記
CGIをチェックする
という設定を使えばエラーがどこで出てるかわかると記憶があるが。
0382nobodyさん03/02/16 00:10ID:???
もちろん一般パスで使う設定にしてあるよね?
038337303/02/16 00:49ID:51g/G1ig
>>379
動かん

>>380
設定の位置はなんとなく分かった・・でも動かん。
拡張子は.cgi
.plにしても動かんよ?

>>381
検査結果:
Error 500
CGI エラー - CGIを実行できません : だそうだ

>>382
してあるよ?

自分としては、いろいろやってみてできなかったし、YahooBB関係じゃないかと思うのだが・・
それともやっぱりソースとか設定とかが原因ですか(´ー`)?
0384nobodyさん03/02/16 00:54ID:???
バージョンは正確にいうと何だ?
最後のアルファベットも含めて。
0385nobodyさん03/02/16 00:56ID:???
そういえば最近AnHTTPdってCGIがうまく動かないというバグがあったね
0386nobodyさん03/02/16 00:56ID:???
>>373
ローカルで動かそうとしてんじゃないの?なんでYahooBBが。

AN HTTPD と ActivePerl の組み合わせなら kent のとこでも参考に
ttp://www.kent-web.com/www/index.html
0387nobodyさん03/02/16 01:00ID:???
kentだって、プ
0388nobodyさん03/02/16 01:13ID:51g/G1ig
>>384
1.42g

>>386
知り合いが何かそう言ってたんだよ!知るか。

とりあえず今から386のサイトに飛んできます
0389nobodyさん03/02/16 01:29ID:51g/G1ig
逝ってきた。が、やはり動かん
細かいとことかでもいいんで何かあれば言ってください。お願いします
0390nobodyさん03/02/16 01:35ID:???
386のサイト
http://homepage1.nifty.com/monden/cpu/386.html

ちなみに、ActivePerl+httpdを設定無しで
例のhelioWorldを動作させたがきちんと表示されたよ。
両方とも再インストールでどう?
0391nobodyさん03/02/16 01:47ID:51g/G1ig
今日はもう気力が無いのでまた明日で
0392モモコ03/02/16 03:35ID:???
英語用のアンケートCGI探してます。
レンタルCGIでお願いします。
どなたかご存知ですか?

0393nobodyさん03/02/16 06:28ID:???
>>392
スレ違い。
0394nobodyさん03/02/16 10:01ID:0jPHodHR
byte表示を�`バイト表示にしたいんですがどうすればいいでつか?
たぶん$size / 1024を使うとは思うんですが書き方がわかりません
0395nobodyさん03/02/16 10:12ID:???
>>394
>たぶん$size / 1024を使うとは思うんですが書き方がわかりません

答えでてるじゃん。
0396nobodyさん03/02/16 10:30ID:0jPHodHR
$kzyte=ってかくんでしょうが細かいとこがよくわかりません。。。
0397nobodyさん03/02/16 14:39ID:???
>>396
Perlだとして、

print ($size/1024), "イ�`バイト";
039837303/02/16 15:30ID:51g/G1ig
win2000の再インストールをしてき増
0399nobodyさん03/02/16 15:45ID:???
>>398
まだ出来ないのか。がんがれよ

AN HTTPD でどうしてもできないなら Apache のほう使うのもいいかもね
設定のしかたが難しい印象があるかもしれんが、解説ページを1つ紹介しとく
ttp://www2j.biglobe.ne.jp/~apollo/server/server.html
0400nobodyさん03/02/16 15:49ID:PVMDa3kD
あふぇ
0401nobodyさん03/02/16 15:54ID:HkwUW3eX
http://f-cc.com/~momonga/
040237303/02/16 17:16ID:51g/G1ig
さて、再インストールも終わったところで399の解説ページでも見てくるかな
040337303/02/16 17:44ID:51g/G1ig
まあその前にもう一度ActivePearlを入れなおしてみようとしているわけなんだが、
インストールする位置はどこがいい?
標準ではc:\perl\になってるわけだが、これでもいいのか(´ー`)?
0404nobodyさん03/02/16 17:44ID:???
>>403
どこでもいいよ。
0405nobodyさん03/02/16 17:54ID:???
>>403
貴様漏れの紹介したページ読んでないですか?
たしかに>>404の言うとおりどこでもいいんだけど、ローカルでテストしたあとは
サーバーにアップロードするんでしょ?そのときいちいちスクリプトの一行目の
Perlのパスを書き換えないでいいように、サーバーの設定とそろえておくほうがいい。
そのへんのフォローも書いてるから>>399のサイトを読みながらインストールしてみ
040637303/02/16 18:08ID:51g/G1ig
成功した!皆さんほんとにありがとう!
再インストールして良かったよ。疲れたけど

>>405
どもどもすみませぬ。399のとこにはお世話になりますた。
非常に感謝しておりますです。はい。

これからたくさんやりたいことがあるので、
いろいろと勉強してがんばりたいです。それじゃ。
0407nobodyさん03/02/16 19:12ID:y0NHKpEd
>>1なんで最後に〜.cgiってつけなくちゃ駄目なんですか?
0408nobodyさん03/02/16 19:42ID:???
>>407
拡張子がcgiなら取りあえず実行してくれ。

って言う設定になってるからですよ。httpサーバが。
0409nobodyさん03/02/16 20:44ID:???
>>407
サーバの設定をいじれば.unkoでも.chinkoでもできる
0410nobodyさん03/02/18 00:15ID:FF7juywa
ageとく。
0411nobodyさん03/02/19 03:48ID:???
>>407
httpd.conf の中にありまふ
.cgi で検索してると出てくるよ
AddHandler cgi-script .cgi
て具合に
0412nobodyさん03/02/19 04:11ID:vr421/dJ
メールフォームで、SSLページから受信した内容を、
PGPなんかで暗号化してメールを受信出来るようなCGIとか
ありませんかねぇ。。

SSLからそのまま平文メールだと意味無いんで・・・・・

フリー&シェアウェア&市販、どれでもいいんですが、
自鯖で使えるやつを探してます。


0413nobodyさん03/02/19 04:32ID:oWKZ/weY
>>412
他のスレと勘違いしてねぇか?

こんなCGI探してますスレッド Ver8
http://pc2.2ch.net/test/read.cgi/php/1041564353/
■ このスレッドは過去ログ倉庫に格納されています