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

CGI: Common Gateway Interface part 11

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/06/14 22:26ID:F9qlqHNx
CGIの運用に関する質問スレッドです。

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

Perlのコーディングに関する質問は、専用スレでお願いします:
[Perl 初心者コーナー Part24]
http://pc2.2ch.net/test/read.cgi/php/1054992610/

CGIとPerlの区別がわからない、という人はとりあえずこちらへ:
[WebProg 初心者の質問 Part3]
http://pc2.2ch.net/test/read.cgi/php/1045091733/

過去ログ・関連スレッドは >>2-5 あたりに
0082nobodyさん03/06/27 15:29ID:???
>>77
ヘッダでコードを指定したのなら、出力する文字も同じコードじゃなきゃダメだよ。
そのヘッダは「ShiftJISに変換してくれるおまじない」ではないので、実際の文字コードが
EUCとかだったら当然文字化けする。
0083nobodyさん03/06/27 15:31ID:???
>>82
俺が>>80で書いてるだろ。
同じこと書くな、ボケィ
0084nobodyさん03/06/27 15:32ID:???
スクリプト自体がshift_jisになってなきゃだめよ。
jcode.plとかJcode.pm使って、いちいち変換するのは、
ユーザに入力させて、変数に取得するときは必要だが。
0085nobodyさん03/06/27 15:38ID:???
>>84 シゲ
0086nobodyさん03/06/27 15:44ID:???
( ゚д゚)でじゃぶ!?
00877703/06/27 15:48ID:rcTbJk7F
>>80
>>82

「おまじない」じゃなかったんですか!
では、スクリプトをShift_JISに変換してアップすればいいんですか?

・・・その方法を教えてください。
くれくれですみません!
00887703/06/27 16:02ID:rcTbJk7F
FTPソフトに「ShiftJIS変換」がありました。
それでアップしたら、できました!!

ありがとうございました。みなさん。
0089nobodyさん03/06/27 16:22ID:???
>>88
いや・・・ ま、いいか
0090nobodyさん03/06/27 16:41ID:???
>>88
・・・そんな安易でいいのかね。

文字列の処理してる部分があると、
2バイト目に \(0x5C) が入ってる文字で問題が起きるかもよ。
00917703/06/27 17:50ID:rcTbJk7F
>>89
>>90

今のところ、テスト用の簡単なページは正しい表示されてます。

&jcode::convert(\$value,euc,"$kcode","z");
を
&jcode::convert(\$value,sjis,"$kcode","z");
にしました。

iモード用CGIでの注意点とかを説明しているサイトとかあれば
紹介してください。
0092nobodyさん03/06/27 18:01ID:???
ここはいつから、Perl コーディングスレになったんだ?





「CGI (Common Gateway Interface)」 は プログラミング言語じゃねー!!
0093nobodyさん03/06/27 18:05ID:???
>>91
convertはそれでいいけど、そのことじゃなく。
スクリプトのファイルをシフトJISで保存してうpしろってこと。
その際、>>90が言うようなEUCでは問題のなかった部分が出てくるわけ。
0094nobodyさん03/06/27 18:21ID:???
Perlスレとの相互誘導に疲れたので、もうここで答えることにしてます。
0095nobodyさん03/06/27 18:59ID:???
>>94
諦めたらそこで試合終了だよ
0096nobodyさん03/06/27 19:00ID:???
つっか、タイトルの左端に「CGI」って付いてるから意味ないじゃん。
アホが見たらCGI=Perlに脳内変換されるだろ。
Common Gateway Interface だけならまだ良かったかもしれん(手遅れだが)
0097nobodyさん03/06/27 21:03ID:???

いっその事 >>92 を >>1 にして、あとはなんもテンプレ書かないってのはどうよ?
0098t03/06/28 16:25ID:???
t
0099nobodyさん03/06/28 17:54ID:???
>>97
あー、はげどうだね
0100nobodyさん03/06/29 09:15ID:???
100geto zusa zusa (AA ry
0101nobodyさん03/06/29 17:15ID:KusTQ6u8
CGI組んでるのですがちょーっと行き詰まってしまいました。
a,cgiでアンケートを集めてa.txt(datでも何でも空ファイル)というファイルに保存したいと思います。
そこで、a.txtにアンケートが投稿されるたびに1行づつ書き足していきたいのですがそこがよくわかりません。
どうやればいいのでしょうか?
0102nobodyさん03/06/29 17:20ID:???
>>101 ダメダコリャ ヽ(´Д`;)ノ

君の質問のオカシイ所をあげてみようか…

1.何の言語で cgi を書いているのか明記していない

2.どの様な言語であろうと、それは完全にバックエンド(サーバーサイド)側で
閉じた処理なので CGI とは「あまり」関係ないと思われる

3.そんな君の為にこんなスレッドがこの板には存在する
http://pc2.2ch.net/test/read.cgi/php/1056078605/
0103nobodyさん03/06/29 17:30ID:???
そうだな。最低限、言語は書いてほしい。
Perlだと思って回答したら、実はPHPでしたとか言われたらげんなりだし。
0104nobodyさん03/06/29 20:41ID:???
a,cgi
0105あぼーんNGNG
あぼーん
01061 ◆mwE/vdIjgM 03/07/02 03:28ID:g3RHDSaJ
CGIって俺のこと?
01071 ◆mwE/vdIjgM 03/07/02 03:44ID:???
Perl で作ったCGI の出力が文字化けします。
ブラウザが、EUC-JP に設定してるのにISO-8859 として認識してしまいます。
解決方法はありませんか。
0108nobodyさん03/07/02 04:24ID:???
>>107
>>106は一体なに?
なんか真面目な質問に見えないから、今日は放置。。
0109nobodyさん03/07/02 04:34ID:???
>>108
うん、俺もそう思って放置してた
0110nobodyさん03/07/02 07:17ID:???
日本人だと思って日本語で話し掛けたら
英語で返答されました。
0111nobodyさん03/07/08 04:54ID:???
このスレ使われないね・・・
0112nobodyさん03/07/08 06:02ID:???
それだけみんなうまく運用してるのさ
0113nobodyさん03/07/08 10:59ID:???
perlスレで答えてやってるからな。
0114nobodyさん03/07/08 11:23ID:???
スレ題を「CGIだけど、何か質問ある」のままにしときゃ
よかったのにな。今のじゃ、読む気がしない。

0115nobodyさん03/07/08 11:49ID:???
本当にCGIの運用ネタを扱うなら、そんなに需要があるわけでも
ないんじゃない?
0116nobodyさん03/07/08 11:53ID:???
スレタイ1つでこんなにも変わるとはね。
0117nobodyさん03/07/08 11:55ID:???
今までいかにスレ違いの質問が多かったってことか。
0118nobodyさん03/07/08 12:38ID:???
そもそもCGIなんて話すことほとんどないしな。
CGI/1.1の話に花でも咲かせようか?
0119nobodyさん03/07/08 14:36ID:???
CGI/1.1 って何だよ?(藁
0120nobodyさん03/07/08 14:39ID:???
>>119
「何だよ」って何だよ?(藁
0121nobodyさん03/07/08 14:48ID:???
>>119
知らなかったらググる
0122nobodyさん03/07/08 15:19ID:???
PerlスレよりWebProg 初心者スレに流れてるんだよね
0123nobodyさん03/07/08 18:11ID:???
それは良い傾向。
「コーディング」の一言が効いたのだろうか。
0124nobodyさん03/07/09 11:34ID:LTIOpV+b
htdocsの直下に.htaccess に
ErrorDocument 404 /go2top.cgi
と書いて、

go2top.cgiには

#!/usr/local/bin/perl
$|=1;
print "Location:http://www.foo.co.jp/\n\n";
exit;

と書いたのですが、

存在しないURLにアクセスしても、
cgiを読みに行かず、
普通の「ページが見つかりません」となって、
Apacheのログを見ると、
ただの404 not found になってしまいます。

なぜなんでしょう?
------------------------------------------------------------
あと、これと関係しているのかどうかわかりませんが、
404の場合の制御に関して、何かが何kb以下だとどうのこうのっていうのが、
あったかと記憶にあるのですが、
なんだったでしょうか?
0125nobodyさん03/07/09 11:39ID:???
>>124
激しくスレ違いな気がするが

・go2top.cgi は document root にあるの?
・ファイル名サフィックスが .cgi の時、CGI Script として動くようにしてるの?
0126nobodyさん03/07/09 11:46ID:???
>>124
すれ違いだけどIEはエラードキュメントが小さいと自前のドキュメントを吐いてくれる。
迷惑なんだけどね。
0127nobodyさん03/07/09 11:50ID:???
結局 M$ は周りに迷惑かけまくってるってことか
012812403/07/09 12:33ID:???
>>125
>激しくスレ違いな気がするが
あ、htaccessのえらい人
http://pc2.2ch.net/test/read.cgi/php/1019888234/
っていうスレがありましたね・・・ここからはそっちに移ります。

で、返答をば・・・
>・go2top.cgi は document root にあるの?
>・ファイル名サフィックスが .cgi の時、CGI Script として動くようにしてるの?
なってます。

>>126
なるほど、さんくすです。
012912403/07/09 12:41ID:???
・・・っていうか、
ErrorDocument 404 /
ってすればいいだけだと気づいた・・・。
1枚ページをかまさずに、
エラードキュメント=トップページにしちまえばいいと。

すんません。
0130nobodyさん03/07/09 12:45ID:???
まあ、なんでもいいけどカスタムエラーでいちいちCGI動かしたらかなわんがな
0131nobodyさん03/07/14 03:07ID:E2SfNkcW
携帯用のランキングCGIを作ってるのですが、
同じ携帯からの2回以上のアクセスはカウントしないようにする場合
どうやって同じ携帯電話であることを特定すればいいでしょうか?
0132nobodyさん03/07/14 03:16ID:???
IPアドレスで判断すればいいのではないでしょうか
携帯電話使った事無いから詳しくはわからんけど・・・
0133nobodyさん03/07/14 03:16ID:???
同じ携帯ってあなたの頭の中ではどう定義されてるのか?
それを示さない限りはっきりとした解答は得られない
0134nobodyさん03/07/14 03:54ID:???
携帯はページ取得ごとにIPかわるよ。
0135nobodyさん03/07/14 04:06ID:???
同じ携帯かどうかの判別はutnみたいなものを使わない限りできない
0136nobodyさん03/07/14 04:37ID:???
IDとパスワード使えばできる。
0137あぼーんNGNG
あぼーん
0138nobodyさん03/07/14 06:20ID:???
運用スレにプログラミングの質問が来て、
プログラミングスレに運用の質問が来る。

アホらしい世の中であるなぁ。

0139あぼーんNGNG
あぼーん
0140nobodyさん03/07/14 15:09ID:???
レンタルサーバの引越しをしたのですが。
SSIの動作が異なっているために実行されません。。

SSI実行時のカレントディレクトリが異なっているようです。

サーバ側の設定などで修正は可能ですか?
ファイルの修正は多すぎて大変なので・・・。

解決策をご存知の方教えてください。
0141nobodyさん03/07/14 16:28ID:???
ディレクトリの指定を変更すればいいじゃん。
大体、その質問内容だと何をしたいのかさっぱり解らん

他の人解る?
0142nobodyさん03/07/14 16:39ID:???
同じくわからないな
具体的にどういうSSIがどうなるのか
0143nobodyさん03/07/14 18:40ID:???
>>140

>サーバ側の設定などで修正は可能ですか?
技術的に可能かも知れんが、そんなこたあ鯖管に聞け。ここで聞くな。

>ファイルの修正は多すぎて大変なので・・・。
そういうのをすぐに修正できるようにスクリプト組まなかったお前の自業自得。
0144nobodyさん03/07/15 03:40ID:Hnq/UICw
CGIをフリーウェアとして配布する時のライセンスだけど、GPLで配布するのって、どうよ?

[賛成]
・自由にいじれる(CGIならGPLでなくとも大抵普通だけど)。
・条件さえ満たせば、いちいち許諾を得ずに自由に再配布できる。

[反対]
・商用化の時に足かせになりそうだ(?)。
・“GPL汚染”が嫌だ。
0145nobodyさん03/07/15 06:30ID:???
>・商用化の時に

自意識過剰です。
0146nobodyさん03/07/15 06:54ID:???
CGIって規格(仕様?)自体はコピーフリーだろ。
自作perl scriptという意味ならその限りではないが。
0147nobodyさん03/07/15 11:00ID:???
>>146 スマソ
0148山崎 渉03/07/15 11:05ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0149nobodyさん03/07/15 12:25ID:BbnXwsym
あげ
0150nobodyさん03/07/17 00:06ID:???
CGIで動作する仕組みで
あたらしくフォルダーやら空白のDatファイル等を
作成する方法を教えてください。

言語はPerlです。

0151nobodyさん03/07/17 00:29ID:???
方法?Perlの書き方ならPerlスレに池!
0152nobodyさん03/07/17 00:35ID:???
>>150
マルチポスト?
http://pc2.2ch.net/test/read.cgi/php/1056730690/680
0153nobodyさん03/07/17 12:52ID:???
#! /usr/local/bin/perl
print "Content-type: text/html\n\n";
print "foo";

とだけ書いたCGIを、SSIの#include virtualで呼び出す。
ちゃんとfooという文字列が埋め込まれてめでたしめでたし…
と思ったら、なぜか特定のリンク元から飛んでくるとエラーになってしまう。
[an error occurred while processing this directive]

たったこれだけのスクリプトなのにリンク元によって動作が違うなんて
一体何が原因なのだろうか。
0154nobodyさん03/07/17 13:03ID:jvbzuuVH
Locationヘッダでリダイレクトするとき、
print "Location: http://www.foo.com/file/thanks.html\n\n";
でなく
print "Location: ../file/thanks.html\n\n";
のように相対パスで書くと、
確か、なんらかの条件(環境)のときに、
正常に動作しない・・・という記憶があるのですが、
どういう条件(環境)でしたっけ。
0155nobodyさん03/07/17 14:09ID:???
>>154
RFC2616 HTTP/1.1
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
絶対URIに「すべき」と書かれているのに、
相対URIを薦めているバカサイトはどこだ?晒してみ。
0156nobodyさん03/07/17 14:31ID:???
>>155
どうしたら>>154から「相対URIを薦めているバカサイト」などというものが読みとれるんだ?
0157nobodyさん03/07/17 14:45ID:???
>>154-155
「相対URI」について補足。ID、PASS 共「cgi-ml」 。
http://ns3.yt.com/ml/cgi/htdocs/44500/44507.html
http://ns3.yt.com/ml/cgi/htdocs/44500/44509.html

Location: /abs_path/file は CGI 的には正しいけど、それを
サーバが Location: http://example.com/abs_path/file に
リダイレクトしてくれないと RFC2616 (HTTP) 的に不可になる、
という話らしい。

まぁ絶対URIで書いとくのが一番良いのは変わらんですが。
>>154 みたく相対URI且つ相対パスな指定はどっち的にも不可。
0158nobodyさん03/07/17 15:51ID:???
>>157のリンク、パスワード入れないと見れないのねん。。(´・ω・`)ショボーン
0159nobodyさん03/07/17 16:09ID:???
>>158
書いてあるじゃん
016015803/07/17 16:17ID:???
ホントダ!!
_| ̄|○ 吊に逝てきまつ
016115403/07/18 00:09ID:???
>>155
他人がつくったcgiを改修せなあかんのですが、
そのcgiの中に、print "Location: ../file/thanks.html\n\n";
があったもんで・・・。

なもんで、改修中なのでさらせませんあしからず。

>>157
ありがとうございます。
理解しますた。
0162nobodyさん03/07/19 11:31ID:7HceImjZ
あるサイトのURLで、拡張子がcgiの場合、
使ってる言語がperlである可能性って、
何%くらいだと思います?

-------------------------------------------------------------
(以下、事情というか、蛇足ですが)

というのも、うちの会社がレンタルサーバ屋さんをやってて、
うちのサーバではperlしか使えない(php、asp、jsp使えない)んですわ。、
(ちなみにおれは、その会社のウェブ制作事業部で、perlのプログラム組んでる)

で、サーバ営業の人が
「他のサーバからうちのサーバへ移行しましょうよ〜」と言うとき、
お客さんのサイトで使ってる言語が、わからないときがあるので。

拡張子がphpなら、移行無理ってわかるんですけど、
拡張子がcgiの場合、どうなんだろうと思いまして。
0163nobodyさん03/07/19 11:42ID:???
>>162
そんなフロントエンドの言語が何か知ったところでシステムを掌握出来るのかい。
0164nobodyさん03/07/19 18:30ID:???
他にもDBとかOSの種類とか色々な問題がありそうだが。
0165nobodyさん03/07/19 18:42ID:???
>>162
レンタルサーバーなら、実際のところ9割方perlなんじゃねーの?
ただ、>>164の言うとおり、dbやら、cronとかメールまわりとか、他にも障壁は山積みだが、
営業のとっかかりとしては拡張子cgiで判断してもいいんじゃねーの。
0166nobodyさん03/07/19 19:00ID:???
>>162
と、言うか、

>うちのサーバではperlしか使えない(php、asp、jsp使えない)んですわ。、

明らかに自社システムに魅力が無いのを何とかした方が良いんではないだろうか。
0167nobodyさん03/07/19 21:00ID:???
イマドキ、Perlだけでつか・・・。ネタ?
016816203/07/19 22:12ID:xa8aez3T
>>163
はげしくどうい
>>164
うち、DB使えません(泣)
>>165
crinなんて、たぶん営業の人は聞いたこともないだろー。
>>166
そうなんですよねー。
でも、もっと何かをつけたとして、はたしてカスタマーサポートできるのかどうか・・・
>>167
マジです。でも、rubyは使えるよw
016916203/07/19 22:13ID:???
>>168
crin はcronのtypoね
0170あぼーんNGNG
あぼーん
0171nobodyさん03/07/25 23:16ID:gaEpK534
CGIでjavascriptを含むhtmlを吐き出す時に、javascriptが働かないものがあります。
ヘッダは同じだし、吐き出されたHTMLをhtmlファイルとしてupするとちゃんとjavascriptをかみます。

特にエラーはでてきません。無視されますが。
IEでは「書き込みできません」というエラーがでます。

お心当たりある方はレスおねがいします。
0172あぼーんNGNG
あぼーん
0173nobodyさん03/07/26 02:05ID:MRZ/abmL
テキストファイルをHTML出力する際に、MacとWindowsで表示が変わってしまい、
困っています。同じフォーマットのHTMLファイルを作成して見る分には、
MacとWindowsの環境では違いはないので、タグの問題ではないと思います。

現象としては確認していないのですが、スペースで区切った部分がズレたり、
文字化けを起こしているようです。

原因に心当たりのある方はいらっしゃるでしょうか?
もしわかる方がいましたら、教えてください。よろしくお願いします。
0174nobodyさん03/07/26 02:29ID:???
>>173
「テキストファイルをHTML出力する際」ってどゆこと?
htmlなの? plaintext ファイルなの?

.txtとかをサーバにアップロードして、htmlファイルからリンクして表示するときのことだとすると、
.txt の Content-type が何になってるか、Content-type と一緒に吐く charset と
ファイルの文字コードが食い違ってないかとか確認したらいいと思うけど。
まずは現象を確認して、現象を再現できるようにしないと対応は難しいんじゃないかな。
0175あぼーんNGNG
あぼーん
0176nobodyさん03/07/26 03:11ID:MRZ/abmL
>174
レスありがとうございます。

正確には
1. テキストファイルをサーバにアップ
2. cgiでテキストファイルをもとに、データファイルを作成
3. 同じくcgiでデータファイルをもとにprintでHTML出力
という流れで処理しています。

このcgi出力で表示しているものとは別に、
同じフォーマットのHTMLファイルもあるのですが、
それだときちんと表示されています。

この違いがどこからくるのかわからなくて…。

現象の再現は、Macを持っていないので、ちょっと難しいのです。
0177nobodyさん03/07/26 03:25ID:???
>>176
出力が同じで見た目が違うということは
HTTP Response Headerが違うということ。
>>174さんの言う通り
>.txt の Content-type が何になってるか、Content-type と一緒に吐く charset と
>ファイルの文字コードが食い違ってないかとか確認したらいいと思うけど。
です。
0178nobodyさん03/07/26 03:28ID:???
>telnet www.***.com 80
GET /***/hoge.html HTTP/1.0

の出力結果と

>telnet www.***.com 80
GET /***/hoge.cgi HTTP/1.0

の出力結果で食い違う部分を貼ってごらん。
0179nobodyさん03/07/26 04:18ID:???
>177-178
レスありがとうございます。やっと意味がわかりました。

つまり、例えば2.のデータファイルはeucコードなのに、
3.でS-JISとして表示していないか、ということなのですね。

お恥ずかしい話なのですが、
無料サーバなので、telnetが使えないのです。

環境を再現する方向で、なんとか対応してみたいと思います。
こんな夜中にありがとうございました。
0180nobodyさん03/07/26 05:13ID:???
>>179
>無料サーバなので、telnetが使えないのです。
んなわきゃない。80番ポートにつなげられなかったらブラウザからでも見えなくなってしまうぞ。
0181nobodyさん03/07/26 06:00ID:???
レスありがとうございます。

念のため確認してみましたが、やはり切断されてしまいました。
ダメみたいです。
■ このスレッドは過去ログ倉庫に格納されています