CGIだけど、なんか質問ある? Part 9
■ このスレッドは過去ログ倉庫に格納されています
0001ななし ◆E6qQ.htN7o
03/01/03 02:56ID:H5ub4PWW※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
【Perl】初心者コーナー Part18
http://pc.2ch.net/test/read.cgi/php/1037797479/l50
過去ログ・関連スレッドは >>2-5 あたりに
0232nobodyさん
03/02/03 17:18ID:???もしくは#!/usr/bin/perl です。
両方試してみた?
0233nobodyさん
03/02/03 17:19ID:800eNsZd777でだめなら755にしる。
0234221
03/02/03 17:21ID:QjlL5TK8755にしたらちゃんと表示されました!
皆さん本当にありがとうございました〜
なんだかんだいって、やっぱり2chは頼りになります
0235nobodyさん
03/02/03 18:50ID:???頼りにするのは困る。最終手段として使え。自分で調べられないと生きていけないぞ。
今回の問題は、suEXECのセキュリティーチェックに引っかかってる。点。
worldから書き込み可能なファイルは、所有者以外に書き換えられた可能性がある
から、実行させてくれない。ということ。
0236179
03/02/03 21:00ID:???モジュールが呼び出せないためSocket通信できませんでした。
push(@INC, "/hoge"); とかも駄目でした。
0237nobodyさん
03/02/03 21:15ID:???0238sub()
03/02/04 00:03ID:rUOqBsxa一行づつループかけてマッチした行以外をTMPファイルに吐き出して
それをログファイルに上書き(>)した後、書き換えたい行を(>>)で書けば
よいんでしょうか?3日悩んでます。。。
0240179
03/02/04 01:52ID:???>237
の言う通り、システムコールで動きました。
0241nobodyさん
03/02/04 09:32ID:???0242nobodyさん
03/02/04 16:44ID:???一行ずつ読み込んでいく方法はないものでしょうか。
@file = <IN> といったメモリにファイル全部読み込む方法は使わず、
一行ずつ読み込んで、一行ごとに違う処理をしていきたいのです。
while の中でループ回数カウントしてifで判定しろ、なんていうのはなしで。
ファイルを一行読み込む場合、
open(IN,"$logfile");
$line = <IN>;
と、やれば出きるのはどこにでも書いてあるのですが、
2度目以降 $line = <IN> としても空でした…。
Perl は一行ごとに分けるデータ構造が身についてしまってるのがダメなのかなぁ…。
seek と read 使えばよさそうなのは解ってはいるのですが、
ベースから書き換えなくてはならず、このままの構造でなんとかできないものかと。
0243242
03/02/04 17:30ID:???あちらにいってきます。
0244179
03/02/04 18:53ID:???まあいいや。seekとread使わないと駄目じゃない?
それなら方法が下のページの"ファイルをブロック化する" に書いてあるけど。
ttp://homepage2.nifty.com/S_HIASA/kotohazime/perlpro.htm
0245nobodyさん
03/02/05 00:47ID:Rqrb27N+分散して、複数のCGIを設置するのとどちらが良いのでしょうか?
例えば、カテゴリ別の掲示板だった場合…
bbs.cgiで10のカテゴリの掲示板を運営できるものと、
bbs1.cgiと、bbs2.cgiで5のカテゴリずつ運営する場合です。
この場合、下記の場合の方が、負荷を軽減できると感じてしまいますが
実際の所はどちらがよいのでしょうか?
0246nobodyさん
03/02/05 00:48ID:k4P35St7思い > 重い
0247nobodyさん
03/02/05 00:53ID:???そのCGIが、インタプリタによって実行されるものだと勝手に仮定すると、
普通に考えて、一度に解析されるコードの量が少ないと、負荷は減る。はず。
でも、>>245の場合、実際に解析されるもの自体は同じだと思うから、効果は無い。と思う。
分割するとしたら、読み込み用、書き込み用、メンテナンス用とか、機能別に分割する
方が、よろしい
0248245
03/02/05 01:03ID:Rqrb27N+CGIの内容は、スレッド掲示板をいくつでも作れてしまうというものです。
書き込み、読み込み、メンテ用などは、各CGIで動作します。
このCGIシステム一つで、掲示板を50個を運営するのと、
CGIシステムを5個設置して、10個の掲示板を運営するのと…という場合です。
読み込み用のCGIがbbs.cgiだとすると、
50の掲示板それぞれ、1分間に10人がアクセスすると、
bbs.cgiを500回動作させる事になります。
0249nobodyさん
03/02/05 03:24ID:CZbUch9cchmod 0604, "$storedir$prefix$id.$type";
0251nobodyさん
03/02/05 10:47ID:OGgWzvAlPHPとか、PEALとか、 JAVAとか、 ASPとかあるけど、
大きなデータベースを使ったWEBアプリケーションを作る場合、
どれが性能がいいですか?
今ASPしかやってませんが、次になにを勉強しようか
考えてます。
0254nobodyさん
03/02/05 11:17ID:OGgWzvAlそれもそうなのですが、当方Win2000Serverしかなく
他を試すのがたいへんなので広く知ってる方に教えて
頂けないかという少々怠慢なお願いでした...。
ちなみに同僚はPHPにすれ、と言ってました。
0255nobodyさん
03/02/05 11:48ID:hzviKg6+というデータでInternal Server Errorになりました。
とりあえず、$race2 = 'C2';
で対応しましたが、
これって、エディタの設定(sjis)が悪いんでしょうか。
それともコードでしょうか。
0257255
03/02/05 12:02ID:???文字化けする文字が悪さをした、としか分かっていません。
0258nobodyさん
03/02/05 12:37ID:???$race2 = 'C2十\';
0260nobodyさん
03/02/05 12:49ID:???それだけじゃ何なんで、説明するわ。
シングルクォート内であっても、末尾が '\' で終わる文字は書けない。
(閉じるための ' がエスケープされてしまい、
Can't find string terminator "'" anywhere before EOF
というエラーになる)
'十' という文字は2バイト目が思いっきり '\' なので、エラーになる。
他にダメな文字は以下のとおり。
―ソЫ�\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬
畚秉綵臀藹觸軆鐔饅鷭�x�x
ちなみにエラーを書くときは、このPerlの出すエラーを書くようにね。
Internal Server Error なんて、ヘッダの吐き忘れでも出るから意味なし。
0261nobodyさん
03/02/05 12:58ID:???0264255
03/02/05 13:01ID:???0265255
03/02/05 13:20ID:???おながいしますmm
0266255
03/02/05 13:23ID:???0268nobodyさん
03/02/05 13:32ID:/TzrVcwr$num{"$str"} = 0;
}
else{
$num{"$str"} = $FORM{"number$count"};
}
とは何をやっているのですか?
初心者で厨な質問で申し訳ないです
お願いいたします
0270_
03/02/05 14:35ID:KqDONkoEif文の意味なしと思われ。
$num{"$str"} = $FORM{"number$count"};
0272nobodyさん
03/02/05 15:45ID:???( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←>>271
0273nobodyさん
03/02/05 21:06ID:tr4FI/E+Perlで、use IO::Socketを使って、
2chを読んで加工して表示するCGIを作っているのですが、
板自体
http://pc2.2ch.net/php/
は読めるのですが、
http://pc2.2ch.net/test/read.cgi/php/1041530204/l50
などのCGIが出力するスレが読めません。
Found
The document has moved here.
が帰ってきます。どうすれば読めるようになりますでしょうか?
ヒントでも構いませんので、よろしくお願いします。
0274nobodyさん
03/02/05 21:15ID:???0275nobodyさん
03/02/05 21:32ID:gt7kwXPU@niftyでmethod=POSTが使用できるのでしょか?
いろいろ見てはいるのですが解らなかったので
おしえてくほしいです
0276nobodyさん
03/02/05 21:36ID:???0277275
03/02/05 21:53ID:gt7kwXPU0279275
03/02/05 22:00ID:gt7kwXPUBBS設置できなくてこまってるんでつよ・・・
0282280
03/02/05 22:03ID:???確か@niftyはそういう制限があったはず。
0283275
03/02/05 22:11ID:gt7kwXPU二つひつようなもんで
専用の場所に置いて専用のURLでアクセス
してるんですが、えらーになるんですよ
0284273
03/02/05 23:15ID:tr4FI/E+2chを取得する>>273の件ですが、
Headerを取得してみたところ、
head pc2.2ch.net /test/read.cgi/php/1041530204/l50 80
HTTP/1.1 302 Found
Date: Wed, 05 Feb 2003 14:11:00 GMT
Server: Apache/2.0.44 (Unix) mod_perl/1.99_07-dev Perl/v5.8.0 mod_ssl/2.0.43 OpenSSL/0.9.6g DAV/2 FrontPage/5.0.2.2624 PHP/4.3.0RC3 mod_gzip/2.0.26.1a
Location: http://binbo8.he.net/cgi-bin/error500
Connection: close
Content-Type: text/html; charset=iso-8859-1
となってLocationに期待のものが入ってません。
GETはhostだけ渡してますが、なにかやり方がマズイのでしょうか。
0285nobodyさん
03/02/05 23:29ID:???$ telnet pc2.2ch.net 80
HEAD /php/ HTTP/1.0
Host: pc2.2ch.net
うしし。
0286nobodyさん
03/02/05 23:48ID:???0287273
03/02/05 23:55ID:tr4FI/E+monazillaってとこに言ってきたら、read.cgiの仕様が解説してあって
print $SOCKET "GET $path HTTP/1.0\r\n";
print $SOCKET "Host: $host\r\n";
print $SOCKET "Connection: close\r\n";
print $SOCKET "User-Agent: dummy\r\n";
print $SOCKET "Accept: */*\r\n";
print $SOCKET "Accept-Language: ja\r\n";
print $SOCKET "\r\n";
したら見事読みました!
0288nobodyさん
03/02/06 06:20ID:???ttp://homepage2.nifty.com/yoshi-m/makehp/free_cgi/CGI/counter/now_counter.html
↑上記のサイトにある閲覧者カウンター(現在の訪問者数を数えるCGI)の設置を
試みています。無事、設置できたのですが、同一IPアドレスをチェックする機能が
ついていないので、GOOGLEなどで検索して調べて同一IPのカウントを制限するような
改造を試みたのですが、どうにもうまくいきません。
バカな質問かもしれませんが、どなたか、どうしたら上手くいくかご教授お願いでき
ないでしょうか?
0289nobodyさん
03/02/06 07:04ID:???具体的にどうやって、どううまくいかないのかを書いてくれないと。
1から10まで手取り足取り教えてもらえると思ったら大間違いだよ。
0290nobodyさん
03/02/06 08:54ID:???1から10まで手取り足取り教えてほしければこちらへ
【 スクリプト改造工房 PART 5 】
http://pc2.2ch.net/test/read.cgi/php/1028193595/
やってくれる人がいるかどうかはしらんが。
0291nobodyさん
03/02/06 12:48ID:???いまいちわからないんですが、例えばフォームのvalueで指定した文字(変数?)は
$変数名にそのまま反映するんでしょうか?
初歩的なことを聞いてスマソです。
誰か教えて下さい〜。。もう一人じゃだめぽ。。
0294nobodyさん
03/02/06 13:58ID:???0296nobodyさん
03/02/06 17:08ID:???IMPORTING ALL PARAMETERS INTO A NAMESPACE:
$query->import_names('R');
This creates a series of variables in the 'R' namespace.
For example, $R::foo, @R:foo. For keyword lists, a vari-
able @R::keywords will appear. If no namespace is given,
this method will assume 'Q'. WARNING: don't import any-
thing into 'main'; this is a major security risk!!!!
最後の1行は、つい最近までPHPのデフォルトの動作だった。
PHPはそんなもんなんだよ。
0297nobodyさん
03/02/06 21:19ID:s4S7/zxSそのメールの中身を解析して適切な答えを返す&HTML生成してくれるものは
ありますか?
0299nobodyさん
03/02/06 21:36ID:s4S7/zxS0302nobodyさん
03/02/06 21:55ID:s4S7/zxS肝心なのはその後で、自動に受信したメールの本文を自動に解析し、
適切な答えを返信する&HTML生成してくれるものを探しています。
0303nobodyさん
03/02/06 22:06ID:???0305nobodyさん
03/02/06 22:23ID:s4S7/zxSアドバイスありがとうございます。
http://pc2.2ch.net/test/read.cgi/php/1041564353/266-
0306nobodyさん
03/02/08 14:13ID:P3EB+0+g以下のような仕様は有名なものなのでしょうか?
あるページAではフレームを切って、
Bという、CGIで作られたサイトを(Aの一部に)表示している。
この時、Bに渡される環境変数HTTP_REFERERは、Perl式で書くと
Win IE6では$ENV{'HTTP_REFERER'}はAのURL。
Mac IE5では$ENV{'HTTP_REFERER'}はundefined。
なぜWinとMacで違うんでしょう。RFCとかでは既定されてないのかな。
0307nobodyさん
03/02/08 14:28ID:n3LLA3DF★もうすぐ春ですよ★
0309nobodyさん
03/02/09 00:27ID:???print $#t;
とすると2ではなくて0と表示されるのは普通?
漏れの環境がオカシイの?
半角スペースでjoinすると、ぴっちり繋がるもんなん?
0310309
03/02/09 00:39ID:???0312nobodyさん
03/02/09 03:56ID:???削除した覚えはないのだが??
今までCGIのチェックに使ってきて何の問題もなかったんだけど、不思議。
つい2,3日前までanhttpd使ってて、今日PHPをapacheのモジュールで
動かしてみようとwindows用のapache(以前入れて放置してあった物)を
いじってたらperl/CGIが動かない。
PHPは正常に動くのになんでかな?と思いつつ、パス関係かなとperl.exeを
探したら??無い。あれ?って思ってanhttpdを起動したら昨日まで異常なかった
Perl/CGIがエラーに・・・。
なんでじゃ〜?不思議でしょうがない。こんな事ってあるんだろうか?
0313nobodyさん
03/02/09 04:01ID:???私の場合は削除はされてなかったんで、パスの指定し直したら直った。
まぁ、Perl再インストールすれば大丈夫じゃないの?
ついでに最新版確認してきてね。
0314nobodyさん
03/02/09 04:55ID:???ちなみに他ディレクトリで解凍してから、C:\php にコピーして設定という方法で
インスコした。
0316nobodyさん
03/02/09 23:57ID:Xc8YBGxY今までPerlでCGIやってたんですが、C言語でCGIを動かそうと思ってます。
色々サイト巡ってとりあえずCygwinをインストールしました。
しかし、Apacheの設定がどうしても分かりません。
Windows+ApacheでC言語のCGIを動かすための説明があるサイト等、
紹介してもらえないでしょうか。
0318nobodyさん
03/02/10 00:05ID:???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の場合はどうすればいいんでしょうか。
0321nobodyさん
03/02/10 00:27ID:VClzLIdPprintf("Content-type: text/plain\n\n");
printf("Hello, World!");
をBCCでコンパイルし、.cgiにリネームしてウェブ鯖で実行したところ、
ダウンロードダイアログが開いて、
落としたのは「Hello, World!」と書かれたテキストファイル.cgiでした・・・
何故ブラウザで開かれないんでしょうか・・・
0324nobodyさん
03/02/10 00:32ID:???すみません、書き込み直後気付いてtext/htmlにしたらちゃんと出来ました。。
皆さんどうもありがとうございました!
0326nobodyさん
03/02/10 00:34ID:???0328325
03/02/10 00:44ID:???手持ちの「Per;/CGI入門教室」とか言う本も、
最初のとこはtext/plainでやってます。。。
0331nobodyさん
03/02/10 11:46ID:???■ このスレッドは過去ログ倉庫に格納されています