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

CGIだけど、なんか質問ある? part 6

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん02/04/23 20:28ID:Kp0cZQna
CGIスクリプトの運用に関する質問スレです。

<<注意:CGIは特定の言語に依存するものではありません>>

Perlのコーディングに関する質問はこちら
【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/


過去ログは>>2
0910nobodyさん02/07/03 09:20ID:???
>>907
おまい、今すぐPerl開発ヤメレ
損害賠償が来る前に
091190702/07/03 09:21ID:???
あう・・・
$dl_fileはソースに固定で持っているので
任意には変えられないです。

それでもマズー?
0912nobodyさん02/07/03 10:55ID:???
>>911
それなら大丈夫だと思うけど、名前からしてファイル名(可変)だと思ったからなぁ(笑)
(ちゃんとチェックすればそれでも問題ないけどね)
>>907はやっぱりサーバの制限じゃないかなぁ・・。
0913nobodyさん02/07/03 11:39ID:???
>>909

べつにいーやんそんくらい。。。
0914nobodyさん02/07/03 13:50ID:???
`command` を使うと、結果がまとめて返ってくるので
それだと、5M以上のデータを一度まるまるメモリにためることになるんじゃない?
system( '/bin/cat', $dl_file );
ではだめ?
091590702/07/03 14:29ID:???
>>909
自分でちっとやってみた。
catじゃなくて他のコマンドつかってみたら
ダメだったので/etc/passwdも読めないだろーとおもたら
(・∀・)デキチャッタ!!!
でもパスは暗号化されてるんだよねって、そういう問題じゃないかw
今後気をつけます。

>>912
ファイルをパラメータを入力するとしたら
パスを直に入れる仕様だと穴は避けられないような気もしますなぁ。
チェックいうても今のスキルではムズかしそうなんで
対象ファイルのリストを別に持っておくくらいが関の山かと。

>>914
はーなるほど。
一応
open(IN,$dl_file);
print <IN>;
close(IN);
でもやってダメだったような気もするです・・・
確認してみます、ドモドモ。
0916nobodyさん02/07/03 14:31ID:???
>>915
デキチャッタって、やばいやん。
暗号化なんてそんなの(やばいので削除
0917nobodyさん02/07/03 14:36ID:lwKk8XgU
ログファイルに
読み込みopen(IN,"$log")と
書き込みopen(OUT,">$log")が
同時に発生したら
ログファイルが壊れる可能性は高いですか?
言語はperlv5.6.0です。
0918nobodyさん02/07/03 14:39ID:???
>>915
 ../ を含むパスとか / から始まるものをはじけば…いいのかな?
0919nobodyさん02/07/03 15:27ID:???
つーか&とかはチェックしてんの?
0920名無しさん02/07/03 15:53ID:???
 すみません。2ちゃんのスレッドの内容をPerlでゲットするにはどうしたらいいで
しょうか?以下のようなスクリプトだと、エラーメッセージが返されてしまいます。
なお、スクリプト中の $message = ....の右辺を普通のhtmlファイルなど
(例えば"GET http://pc.2ch.net/php/subback.html HTTP/1.0\n\n";)
にすると何も問題なくゲットできるのですが。
#
#-------------以下、スクリプトの内容
#
use Socket;
$port = getservbyname('http','tcp');
$svname = "pc.2ch.net";
$ipaddr = inet_aton("$svname") or die "$svname が見つかりません。\n";
$socket_addr = pack_sockaddr_in($port,$ipaddr);
socket(SOCKET,PF_INET,SOCK_STREAM,0) or die "ソケットを生成できません。\n";
connect(SOCKET,$socket_addr) or die "$svname に接続できません。\n";
select(SOCKET); $|=1; select(STDOUT);
$message = "GET http://pc.2ch.net/test/read.cgi/php/1019561283/l5 HTTP/1.0\n\n";
SOCKET $message;
print <SOCKET>;
close(SOCKET);
0921nobodyさん02/07/03 16:15ID:???
魔屡恥。
0922nobodyさん02/07/03 16:22ID:???
>>921
マルチなん?うっかり答書くとこだった。あぶねー。
092392002/07/03 16:46ID:???
マルチではありません。
別にPerlに限った話ではないので、同趣旨の質問がどこかにある可能性
は大きいと思ったのですが、探しきれませんでした。
0924nobodyさん02/07/03 16:54ID:???
ちょいとはまってるのですが、

とあるperlで書かれたCGIを使おうと思うのですが、
そのまま、サーバへアップすると動くのですが、少しでもコードを変更する
と500エラーを起こします。
なぜだかさっぱりわからないのですが、何か分かる方いらっしゃいますか?

ちなみにコードは、スペースを増やすとかだけでもダメになります。
winからFFFTPで文字コードも改行コードも変換しなくでもだめです。
linuxのange-ftpとかで編集してもダメです。

鯖はlinuxです。
改行コードをLFにしてもダメでした。

文字コートか改行コードあたりだとは思いますが、よくわかりません。
手元のlinuxでperl -cw すると、i-modeの絵文字関係のコードが
ひっかかってるっぽいです。
でも、その辺のコードをいじってはいません。

色々試しましたがダメでした。
もし、何か頭に浮かぶものがありましたら、書き込んでいただけると
ありがたいです。

ちなみに、スクリプトは、以下のメル友サーチです。
ttp://download.torworld.com/data/mail/readme.html
0925nobodyさん02/07/03 17:04ID:???
>>920
必要なヘッダが付いてないからだろ。たぶんUser-Agent。
つか素直にLWP::Simpleでも使ってろよ。
0926nobodyさん02/07/03 17:09ID:???
>>920
www.monazilla.org参照
0927nobodyさん02/07/03 17:53ID:???
920の問題には直接関係ないが
read.cgi経由で2chのログを読むよりdatファイル直読みのほうが
サーバの負担が軽くてウマーではないか。
092892002/07/03 18:35ID:???
>>925
LWP::Simpleのことを知りませんでした。
ずいぶんと簡単にできてしまいました。ありがとうございました。
0929nobodyさん02/07/03 18:50ID:???
>>917
壊れないと思うけど、
open(OUT,">$log") でいったんファイルが空っぽになるので、
open(IN,"$log")    の人が空ファイルを読み込んでしまう可能性はる。(っていうか同時ならそうなる)

>>924
いじった後、保存する時の文字コードが原因だと思う。
おそらくオリジナルはEUC-JPで保存されていて、いじった後Shift_JISで保存してるんじゃないかな?
それで 「i-modeの絵文字関係のコード」 ←がエラーになると。
0930nobodyさん02/07/03 23:59ID:???
>>929
そんなことよりさぁ、もっと根本的な問題があるだろ。
もっと目を見開けよ。
0931nobodyさん02/07/04 00:30ID:J1twAOP5
ケータイのサイトで、自分のところのサーバーから外部のサーバー
へ飛ばすときのcgiを作っています。今の段階でできているのは、UserAgentが
何であるか判断し、入力データを分解して、参照したいURLを見るのまでです。
URLにくまれた引数の対応とか、mail toやPhone toなんかのリンクの場合
なんかもできなくています。
作ったのは、↓
my($encoding) = @_;
my($method) = $ENV{'REQUEST_METHOD'};
if ($method eq 'GET') { $query = $ENV{'QUERY_STRING'};}
local(@query) = split(/&/, $query);
foreach (@query) {
tr/+/ /;
($key, $val) = split(/=/);
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/\r\n/\n/g;
$in{$key} = $val;
}
use LWP::UserAgent;
$ua = new LWP::UserAgent;
my $agent = $ENV{'HTTP_USER_AGENT'};
$ua->agent($agent);
my $req = new HTTP::Request POST => $val;
$req->content_type('application/x-www-form-urlencoded');
$req->content('match=www&errors=0');
my $res = $ua->request($req);
if ($res->is_success) {
print $res->content;
} else {
print "No!";
}

print $res->content; って出すと、外部のリンク先をよんだ
ままなんですよね?
0932nobodyさん02/07/04 00:48ID:???
>>931
ようするに飛ばしたいのか?
Location ヘッダを使えよ。

しかし、なんのためにLWPモジュールなんてつかってるんだ?
そんなもんつかうことなんてないだろ。TCP接続なんて自分で書いたほうが
コンパクトで軽いもんが書けるだろ。
0933nobodyさん02/07/04 02:05ID:+/6rMDAW
0=ドコモ、1=ジェイフォン、2=それ以外

この場合
if ($agent eq "0"||"1"){ print "携帯ページです\n"; }
ersif { print "PCページです\n"; }
と
if ($agent eq "2"){ print "PCページです\n"; }
ersif { print "携帯ページです\n"; }

この二つは同じ処理になるはずですが、なぜか上の場合"0"or"1"でもPCページです
と表示してしまいます。とりあえず下の方法はうまくいきます。
何が考えられるでしょうか?
093490702/07/04 02:29ID:???
system( '/bin/cat', $dl_file );
で(・∀・)デキタ!!

print <IN>;
ではやっぱりだめでした(0byte)
これも一気に読み込むんですかねぇ

なにはともあれ
ありがとうございますた。
0935nobodyさん02/07/04 02:32ID:???
>>933
きみの言う「この二つは同じ処理になるはず」の根拠は?
使用している言語は?(ersifってはじめて見るけど…)
0936nobodyさん02/07/04 02:35ID:???
>>934
もっと具体的なソースを見せないと指摘できんよ。
0937nobodyさん02/07/04 02:49ID:???
>>933

$agent == 0 || $agent == 1
としたいのだろ
0938nobodyさん02/07/04 03:00ID:v+ukjorB
あの、DLしてきたスクリプトを普通において掲示板として使いたいのですが
ディレクトリに気をつけて元のファイルと同じようにおいてindexにアクセス
しても何も起こりません。何が間違っているのでしょうか。。。
なにか他に気をつけるところとかあるのでしょうか。。
0939nobodyさん02/07/04 03:38ID:???
>>938
WWWサーバにおかないとだめです。
0940nobodyさん02/07/04 04:18ID:v+ukjorB
>>939
あ、ちゃんとwwwサーバにおきました・・・
0941 02/07/04 07:41ID:???
>>938
「普通において」とか「元のファイルと同じようにおいて」とか言われても
わかりません。
スクリプトの配布先で説明でも見たら?
0942nobodyさん02/07/04 11:10ID:uvCaP6/B
>>924
>ちなみにコードは、スペースを増やすとかだけでもダメになります。
 バイナリエディタを入手して、何が変えられたのか確認すること。
 それ以前に、複数の文字コードに対応するテキストエディタを入手すること。
0943nobodyさん02/07/04 13:27ID:/hy7azYF
ローカルで動作確認しようとしてhtmlからcgiを呼び出すと
ダウンロードになってしまいます。

しかたが無いのでMS-DOSで確認してから
WWWサーバーにアップロードしています。
ローカルでは見た目が分からないので困っています。
なんとかローカルでもhtmlから呼び出せるようにならないものでしょうか?
0944nobodyさん02/07/04 13:30ID:???
サーバーは何を使用してる?
094594302/07/04 14:13ID:???
>>944
ANHTTPDです。レス有難うございます。
漏れの使い方が間違っていました。
htmlをダブルクリックで開いていたのが原因でした
ローカルのアドレスでhtmlを呼び出して動作確認したら動きました。
回線切って逝って来ます。



0946nobodyさん02/07/04 14:17ID:???
http://127.0.0.1/
ではなく、
file:///
だったわけか。
0947nobodyさん02/07/04 15:24ID:f03h23nO
お返事ありがとうございます。

>>929
文字コードは変えていません。
FFFTPでもコードを変えていません。
エディタはemacs系なので、EUCをS-JISでセーブしていないと思います。
というより元のコードがS-JISです。

>>942
テキストエディタは、winではxyzzy。linuxではemacsを使っているので、
文字コード関係ではないと思います。

んー、もうちょっと詳しく調べてみます。
0948nobodyさん02/07/04 15:38ID:???
>>947

>>924に鯖がLinuxって書いておきながら、今度は元コードがSJISってことが
わかっててアップ時もコード変えてないんならダメだろ。
0949nobodyさん02/07/04 15:56ID:62lEfN1M
ある文字列の前が、文の先頭又は ,
ある文字列の後が、文の末尾又は ,

というような正規表現はどのようになるのでしょうか。
正規表現以外でもっと効率のいい方法を知っている方が居たら
ご教授いただければ幸いです。
0950nobodyさん02/07/04 16:04ID:???
>>949
そんなもん正規表現の参考書とか検索すれば必ず書いてあることじゃん。
まずは自分で調べる努力をしろ。
0951nobodyさん02/07/04 16:12ID:62lEfN1M
>>950
文の先頭、文の末尾で ^ または $ を | 記号で使えたんですね。
使えない物として勝手に解釈してしまっていました。
ありがとうございます。

一応、やった方法としてはこのような感じです。
aaaという文字列を調べたい場合に、
$string =~ s/(?:^|\,)(aaa)(?:$|\,)/$1/;

やはりこれ以上、効率のいい方法はないのでしょうか?
0952nobodyさん02/07/04 16:53ID:???
効率をもとめたいのなら、とりあえず先頭マッチと後方マッチは
分けて書くようにしろ。
$string=~ /^\,?aaa/; $string=~ /aaa\,?$/;

あと、なんで同じ文字に置換してるんだ?
0953nobodyさん02/07/04 23:11ID:seos7Can
こんにちは。
PerlのCGI設置で悩んでおります。
当方家庭内向けにBBSを設置しようとVineLinux2.5 + Apache + jperlで構築中です。
ですが、WEBブラウザで表示させようとしてもInternalServerErrorになってしまいます。
バージョン及びPerlのプログラムは以下の通りです。
VineLinux2.5
Apache 1.3.24
perl 5.005_03
jperl 5.005_03_990822

REBBS3.2 http://www.ruuzu.com/
http://botan.sakura.ne.jp/~ruuzu/HTML/cgi2.htm
どうかご助言を宜しくお願いします。
0954nobodyさん02/07/04 23:13ID:???
俺たちに落として、調べてくれというのか?
0955nobodyさん02/07/05 00:55ID:???
500エラー出してる段階で聞きに来るな。
Apacheのエラーログ、perl -wcとかperl -dとか
全部試してから来い。
0956nobodyさん02/07/05 02:06ID:AJZNQJHL
こんにちは。perlでlinuxのユーザー作成とかできますか?
どうやったらできるんでしょう?教えてください。
0957nobodyさん02/07/05 02:07ID:???
system()
0958nobodyさん02/07/05 02:26ID:AJZNQJHL
perlでパスワードの変更は可能でしょうか?
いろいろ試してみましたが、わかりません。
ブラウザ上でパスワードを入力してそれをlinuxに反映させるというのは可能なのでしょうか?
教えてください。お願いします。
957さんありがとうございました。
0959nobodyさん02/07/05 03:06ID:???
帰れ。

http://www.nn.iij4u.or.jp/~nabe/osietekunn.html
0960nobodyさん 02/07/05 03:25ID:qnmKXRgp
minibbsの記録ファイルのログをから、
minibbs.cgiで見られるように書き込みを復活させられないのでしょうか?
サーフレスキューに繋がらないので、ここで質問させていただきました。
0961nobodyさん02/07/05 03:37ID:???
ログを移したいならlog.datみたいな名前のファイル
(要は平文の入ったテキスト)を移動するだけだよ
http://pc.2ch.net/php/dat/1019561283.dat
↑ こう奴な
0962nobodyさん02/07/05 06:02ID:???
ShiftJISか
096395802/07/05 13:51ID:lr7bC3uX
やっぱりperlでパスワード変更は不可能なんでしょうか?
0964nobodyさん02/07/05 14:44ID:???
>>963
パスワード変更できる権限があればできるでしょ。
それなら直接ログインすればいいわけで、なんでPerlでやりたいのか疑問・・
0965nobodyさん02/07/05 14:55ID:???
なんだ?そのレスは・・・・・・・
この板でわざわざそんなこと聞かないだろう。
0966nobodyさん02/07/05 15:09ID:???
やる必要があるから聞いているのでは?
>>964
0967nobodyさん02/07/05 15:16ID:???
>>965 >>966
答えられないなら黙っとけ
0968nobodyさん02/07/05 15:51ID:???
出来るよ、
具体的にはIPCだかのモジュール使ってプロセス間通信をする
勿論上手くやればWebから直接shadow...を書き換える事も可能
でももう殆ど忘れた、つーかPCの使い方も解らんw
0969nobodyさん02/07/05 15:51ID:???
アホか?
>>964にいえよ。
0970nobodyさん02/07/05 16:01ID:???
そろそろ新スレ立てるよ。
新スレの1に書きたいことあればよろすく。
なんもなければPart6をPart7に変えるのみ。
0971nobodyさん02/07/05 16:02ID:???
ここはPerlの質問スレではありません。
CGI全般です。

0972nobodyさん02/07/05 16:17ID:???
2に書くリンク先

■過去ログ
Part3 http://pc.2ch.net/test/read.cgi/php/988727833/
Part4 http://pc.2ch.net/php/kako/1000/10008/1000804655.html
Part5 http://pc.2ch.net/php/kako/1009/10093/1009331505.html
Part6 http://pc.2ch.net/test/read.cgi/php/1019561283/

■CGI以外のPerlに関する質問スレッド
Perl 初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/l50
CGIに依存しないPerlの話題一般
http://pc.2ch.net/test/read.cgi/php/991313362/l50

■関連スレ
【Perl,CGI】参考書籍
http://pc.2ch.net/test/read.cgi/php/988809842/l50
スクリプト改造工房 4
http://pc.2ch.net/test/read.cgi/php/1012839651/l50
こんなCGI探してますスレッド Ver6
http://pc.2ch.net/test/read.cgi/php/1021897804/l50
.htaccessの偉い人 Part3
http://pc.2ch.net/test/read.cgi/php/1019888234/l50
【スレッド】2ch型掲示板 その5【フロート型】
http://pc.2ch.net/test/read.cgi/php/1019414023/l50
0973nobodyさん02/07/05 16:34ID:???
↑■過去ログに追加汁
Part5.01 http://pc.2ch.net/php/kako/1015/10151/1015127347.html
0974nobodyさん02/07/05 18:38ID:???
>>971
>>1にPerl用の誘導がついていた割には、Perlの質問多かったねぇ.…。
0975nobodyさん02/07/05 21:02ID:???
ここは【Perlコーディングスレ】じゃない事も一言頼む
0976nobodyさん02/07/05 23:59ID:oMipjbOm
あげ
097797002/07/06 13:42ID:???
ども。立ててきました。
0978nobodyさん02/07/06 13:45ID:???
Part 6が2つ?
097997002/07/06 13:48ID:???
リンク貼り忘れた。新スレはこちら。

CGIだけど、なんか質問ある? Part 6
http://pc.2ch.net/test/read.cgi/php/1025930486/

てきとーに移動してください。
098097002/07/06 13:49ID:???
>>978
矧ヤ違えた・・・
0981nobodyさん02/07/06 13:50ID:???
折角立ったんだし、ごまかしながら使っちゃう?
098297002/07/06 13:59ID:???
>>981
それでよければ、そうしてもらえると。
いまなら立て直してもいいですけど。
どっちにしてもしばらく2個めのPart6を見るたびに恥ずかしい。
0983nobodyさん02/07/06 15:40ID:???
書込む前に確認…(略
0984nobodyさん02/07/07 18:46ID:6yjH1hUz
CGI AGE
0985nonodyさん02/07/07 19:22ID:???
苦労して cgi をやってきた皆様、長い間ご苦労様でした。
もうその技術は不要です。
これからは .NET です。
苦労して学んだことが無意味になるのは残念なことと思いますが、
頑張って新しいことにチャレンジしてください。

0986nobodyさん02/07/07 21:35ID:???
>>985
CGIって苦労して学ぶほどオマエには難しかったのか?
0987nobodyさん02/07/08 11:13ID:???
最後age
0988nobodyさん02/07/09 11:50ID:xtHTE7mw
CGI終わり?
0989nobodyさん02/07/09 11:51ID:???
1000!
0990nobodyさん02/07/09 14:23ID:???
990GET!
0991ヽ(`Д´)ノ  ウワァァン02/07/09 23:32ID:gcNlx8b2
Win2000pro上でwwwサーバーを起動するところまではできたのに
CGIファイルをエクスプローラーで見ようとすると文字化け! ヽ(`Д´)ノ  ウワァァン
レンタルサーバー上にアップしたら文字化けしないのに! ヽ(`Д´)ノ  ウワァァン
ActivePerlのインストール設定ミスかも...ヽ(TДT)ノ  ウワァァン...
0992nobodyさん02/07/09 23:53ID:???
992!!
0993nobodyさん02/07/09 23:54ID:???
993
0994nobodyさん02/07/10 00:05ID:???
次スレ
http://pc.2ch.net/test/read.cgi/php/1025930486/l50
0995nobodyさん02/07/10 00:06ID:???
埋め立て
0996nobodyさん02/07/10 00:10ID:???
 |:::|:::::/|::/ |:/. | ヽ;::l ヽ:::i丶::::';:::::::;;;;;;;;;;;;;;;;;i
 |:::|::/ !/ _レ?  v、::i ヽ:', \::i丶:;;;;;;;;;;;;;;;;;;;;;|
 |::::i:;', '''''"       ヽ ̄ ヾ''''\:::::;;;;;;;;;;;;;;;;;;|
 |:::::::;;', -─‐-     -──-- i::::::;;;;;;;;;;;;;;;;;;|
 |:::::::;;;i |   l       l   |  |::::::;;;;;;;;;;;;;;;;;;|
 |::::::::;;;l.|  |         l   |  |::::::;;;;;;;;;;;;;;;;;;| あかん、また Internal Server Error や・・・
 |::::::::;;;;i|  |        l  |  !:::::;;;;;;;;;;;;;;;;;;;|
 |:::::::::;;;;;:ヽ ,|  r───、|  |-'|::::;::;;;;;;;;;;;;;;;;;;|
  |:::::::::;;;;;;;;;;;;;`''- ニ,─--,' ‐='"''"|::::;;:;;;;;;;;;;;;;;;;;;;|
  |::::;;:::;;;ri;;;;;;||::/ `i ̄i.:.:.|:.:.:.:i:.:|::::;;;;;;;;;;;;;;;;;;;;;;;|
0997nobodyさん02/07/10 00:13ID:???
      ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (∩・∀・)< もしもし、次のスレッド教えてもらえますか
□……(つ   ) \___________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
0998nobodyさん02/07/10 00:14ID:???
    ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (・∀・∩)    < 次スレですね。http://pc.2ch.net/test/read.cgi/php/1025930486/l50 です
   (    ⊂)……□ \___________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
0999nobodyさん02/07/10 00:14ID:YxncJPQj
★1000★
1000nobodyさん02/07/10 00:15ID:???
今だ!1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。