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

△▲ WebProg 初心者の質問 Part4 ▼▽

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/06/20 12:10ID:???
2ちゃんねるは初めて。
WebProg 板は初めて。
質問したいけど、どうしたら良いか分からない。

そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。

質問する前に、まずはここを読んでね。

2ch 総合ガイド
http://www.2ch.net/guide/
記念カキコ専用スレ
http://pc.2ch.net/test/read.cgi/php/982575577/
前スレ
http://pc2.2ch.net/test/read.cgi/php/1045091733/
http://pc2.2ch.net/php/kako/1037/10372/1037222063.html
http://pc.2ch.net/php/kako/1030/10301/1030151932.html

お願い。
適切な、板、スレ、を発見した場合、誘導してあげましょう。
スレの性質上 age 進行でお願いします。
0357nobodyさん03/07/05 17:05ID:???
板違いでしたらすみません。

cgiを設置し、ブラウザで実行すると

Error message:
Can't locate ./jcode.pl in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-
multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0
/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 .) at
/home/〜/ファイル名.cgi line 11.

ファイルの11行目は
require './jcode.pl';

jcode.plは644にしています。

apacheの設定の問題でしょうか。
0358nobodyさん03/07/05 17:12ID:???
>>356
それじゃダメだな。こんなのでどお?
$addr =~ /\/.+\/(.+)$/;
0359nobodyさん03/07/05 17:17ID:???
>>357
そのCGIと同じディレクトリにちゃんとあるの?
0360nobodyさん03/07/05 17:25ID:mEgBrIzg
>>358
サーバー名に複数の.が存在するせいか
ファイル名の取得がうまくいかなかったので、
ドメイン部を空白に置換することで取得することができました。
レスどうもありがとうございます。

0361nobodyさん03/07/05 17:35ID:???
素朴な疑問なんですが、
ttp://pc2.2ch.net/test/read.cgi/php/1056078605/l50 とか
ttp://pc2.2ch.net/test/read.cgi/php/1056078605/10-20 とか
こういう呼び出し方でdatファイルを柔軟に読めるのはどういう仕組み
になっているんでしょうか? 普通のやり方だと
ttp://www.megabbs.com/cgi-bin/readres.cgi?bo=gikoneko&vi=979832150
みたいにGETで引数を渡すしかないと思うのですが。
0362nobodyさん03/07/05 17:42ID:???
>>359
レスありがとうございます。

同じディレクトリにあるのですが上手くいきません。

違うcgiを設置しても初めのrequireでエラーがでるので、
サーバーの設定かもしれないです。

自宅サーバーの板に行ってきます。
マルチするなって叱られそうですが。
036335703/07/05 17:43ID:???
↑357でした。
0364nobodyさん03/07/05 17:47ID:???
>>361
$ENV{'PATH_INFO'}から引数と同じように受け取っている。
036536103/07/05 18:00ID:???
>>364
なるほど。ありがとうございました。ずーっと謎だったんです。

それでもう一つ質問なんですが、その$ENV{'PATH_INFO'}を使ってる掲示板
って2ちゃんねる以外にあんまりない気がしますが、それはなにか理由が
あるんでしょうか? 鯖の負荷とか脆弱性とか。
0366nobodyさん03/07/05 18:21ID:???
>>365
単にあんまりメジャーじゃない方法だからだと思う。使いどころが難しいし。

2ちゃんねるだって、いつぞやの閉鎖危機の時に少しでも回線負荷を減らす(HTMLドキュメント
やログのサイズを減らす)目的で、緊急避難的に導入されたのが最初だったと思う。
0367nobodyさん03/07/05 18:22ID:???
>>365
2ch型では使っているのは珍しくない。いくらでもある。
0368nobodyさん03/07/05 18:29ID:???

>質問者へ

 ・もう少し試行錯誤(机上であれこれ考えるのではなく実際に色々動かしてみること)して自分で習得しよう
 ・自分の期待している結果を明記しよう(これを書いていない人が多数います。よって、質問内容が意味不明)
 ・できるならデータ処理の過程も書いておくといいかも
 ・言語特有の問題ならば、言語を明記しよう
0369nobodyさん03/07/05 18:31ID:???
>>366
その割には、dat ファイルの中身のアンカーは非PATH_INOF形式だけど(ニガワラ
0370nobodyさん03/07/05 18:34ID:???
>>369
え?
0371nobodyさん03/07/05 19:15ID:???
>>353
pop(split(/\//, $url))
037231803/07/05 19:32ID:???
>>351
>送信されてくる値は ej.x=座標&ej.y=座標 なわけだが、
>この座標は画像の左上を0,0としてクリックした位置。
>もし一番左上をクリックされたら送られてくる値はej.x=0&ej.y=0だぞ。
おー、それは考えていなかった。
さんくすです。
じゃ、if defined($in{ej.x})でオッケーですね。どうもです。
037336103/07/05 19:51ID:H4mrq76T
>366,>367
レスありがとうございます。大体分かりました。
自分も機会があったらその方式を使いたいなと思ったので、
ちょっと突っ込んだ質問をさせていただきました。

369さんの言ってることはよく分かりませんが・・・。
0374nobodyさん03/07/05 19:53ID:???
意味なくageてしまってスマソ
0375nobodyさん03/07/05 19:57ID:???
>>370
いや、かちゅ〜しゃの .dat ファイルのことね。紛らわしくてスマン
0376あぼーんNGNG
あぼーん
0377あぼーんNGNG
あぼーん
0378nobodyさん03/07/05 21:29ID:???
>>371
popは、配列しか相手にしないらしい。
単なるスカラーコンテキストでは駄目らしい。
なので、
(split |/|, $url)[-1];
でどうだ。
0379  03/07/05 21:53ID:HxQB4jGA
まじめな質問れす。

ある特定のメールアドレスに送ったメールのログをとり、
掲示板風に公開するスクリプトってないでしょうか。

これはメーリングリストではなくて、みんなには発信しない。

メールソフトで書いたものをそのまま掲示板の表示にしたいので。
例えば携帯で書いたものをそのアドレスに送れば、
掲示板表示できるような。よろしくです。
0380あぼーんNGNG
あぼーん
0381nobodyさん03/07/05 22:03ID:???
>>379
POPクライアント搭載してリクエストがあればそれを起動し新着情報をCGI側のデータにマージする。
0382nobodyさん03/07/05 22:04ID:???
>379
スレ違い&既出。
自分でやるなら.forwardでcgiにリダイレクト。
0383nobodyさん03/07/05 22:20ID:???
>>382
はぁ?
0384  03/07/05 22:23ID:HxQB4jGA
>>381-382
早速ありがとうございます。
すみません…初心者なので,よくわかりません。
どこのすれで質問した方がよろしいでしょうか?
あと既出は探す方法はありますでしょうか。

>POPクライアント搭載してリクエストがあればそれを起動し新着情報をCGI側のデータにマージする。

サーバをいじれないとダメですか?

>自分でやるなら.forwardでcgiにリダイレクト。

転送設定にcgiのアドレスを設定すればOKでしょうか。
すみません…。
0385nobodyさん03/07/05 22:29ID:???
有名どころだとMHonArcとかあるけどWebProgの範疇をちょっと越えちゃうね。
038638403/07/05 22:31ID:HxQB4jGA
>POPクライアント搭載してリクエストがあればそれを起動し新着情報をCGI側のデータにマージする。

要するに、メールのデータをCGIの
XXX.logデータに書き込めればいいと言うことでしょうか?
それはサーバによっては簡単でしょうか?
0387あぼーんNGNG
あぼーん
038838403/07/05 22:34ID:HxQB4jGA
>>385
やっぱり現実的には厳しいでしょうか?
携帯の知人が携帯に掲示板を呼び出すのは重たいので、
送るだけだとうれしいといっているのですが…。
これができると今までにない掲示板が出来ると思ったんですが…。
0389nobodyさん03/07/05 22:35ID:aHsJafIj
>>378
細かい修正↓
(split q|/|, $url)[-1];

>>382
多分、CGIって単語の使い方間違ってますよ。

>>384
俺は>>381じゃないけど、POPクライアントを自分で書くならサーバーをいじる
必要はない。CGIスクリプトなんか書かなくても自分でメーラー(要するにPOPクライアント)
のようなものを作って、新着のメールが見つかればFTPでデータをサーバーにアップロード
するような仕組みを作ればにたようなものは実現可能。

.forwardでリダイレクトするのなら、リダイレクト先にPerlなんかで書かれたスクリプトを指定
する必要あり。この場合CGIは関係してこない。
スクリプトにはメールの全文が渡るので、それを適当に読み取って掲示板のデータに変換
すればよい。
039038403/07/05 22:36ID:HxQB4jGA
>>385
おおっ!MHonArc早速調べてみます。
039138403/07/05 22:41ID:HxQB4jGA
>>389
む、む、むずかしいです…。
メーラーとはレンタルサーバの
ブラウザメールのようなものでしょうか?
だとすると完全にCGIから離れてしまいますね。(スレ違い)
そのほうがサーバにとってもいいかもしれませんが、
未知の領域なもので…。
039238903/07/05 22:42ID:aHsJafIj
>>390
色々ごちゃごちゃ書いてしまったけど、MHonArcの存在を忘れてた。
多分>>390さんが求めてるものそのままだと思う。

namazuのMLだけど、↓こんな感じになります。

http://www.namazu.org/ml/namazu-devel-ja/index.html
039338403/07/05 22:44ID:HxQB4jGA
>>392
ありがとうございます。
039438903/07/05 22:44ID:aHsJafIj
>>391
POPクライアントを書くのは結構面倒かも。モジュール使う手もあるけど、
初心者だと厳しい気がする。

普通は.forwardを使うかなぁ。サーバーがいじれるなら、スプールを直接
覗くのが一番手っ取り早いけど。
0395nobodyさん03/07/05 22:46ID:???
メールから投稿できる掲示板CGIを使えばいいじゃん
039638403/07/05 23:00ID:HxQB4jGA
>>395
あるのですか?
もしあればそのスクリプトがほしいです。
0397nobodyさん03/07/05 23:09ID:???
>>396
こんなCGI探してますスレッド ver.9
http://pc2.2ch.net/test/read.cgi/php/1051456859/648

こっちで探してくれ。さっき見かけたけどどこでだったかは忘れた。
039838403/07/05 23:13ID:HxQB4jGA
>>397
わかりました。ありがとうございます。
0399あぼーんNGNG
あぼーん
0400nobodyさん03/07/05 23:21ID:???
ブラクラ注意
0401あぼーんNGNG
あぼーん
0402nobodyさん03/07/05 23:52ID:???
ブラクラ注意
040338203/07/05 23:54ID:???
>多分、CGIって単語の使い方間違ってますよ。

そうなん?
0404あぼーんNGNG
あぼーん
0405nobodyさん03/07/06 01:11ID:???
ブラクラ注意
0406nobodyさん03/07/06 11:53ID:o+D1+xYE
パソコン一般@2ch掲示板の超初心者の質問に罵詈雑言で答えてやるスレ Part45から誘導されました。
HPにうpろーだーCGIを組み込みたいんですけどうまくいきません。 鯖はXREAのS31 ソフトはFFFTPです。パーミッションもちゃんと弄りました
0407あぼーんNGNG
あぼーん
0408あぼーんNGNG
あぼーん
0409_03/07/06 12:22ID:???
>>406
「ちゃんと」と思ってるだけだろ。
何をどうしたのか詳しく正確に書いてみ?

XREAのサポート掲示板の方が良さげだが。
0410nobodyさん03/07/06 12:23ID:???
>>406
その情報量だと、

「その調子だ!あともう少し頑張れ!」

くらいしか言えない。
0411nobodyさん03/07/06 12:35ID:o+D1+xYE
CGIはこれです→ttp://www.510m.com/~rinneru/cgi/index.html
で設置したページはこれです→ttp://auau.s35.xrea.com/ezmup もち表示できません。トップは→ttp://auau.s35.xrea.com/
ここの解説ページを見て設置しました。まずIndex.htmをホームページビルダー6.5でうpしました。
次にpublic_html(フォルダ)にezmupをぶち込み FFFTPで解説どおりにパーミッション設定をしました。


0412nobodyさん03/07/06 12:49ID:???
>>411
+-- ezmup / ezmup.cgi [700]
| ezmuplog.cgi [600]
| jcode.pl [644]
| cgi-lib.pl [644]
|
+---- img [705] /
|
+---- lock [707] /
0413nobodyさん03/07/06 12:51ID:o+D1+xYE
>>421 パーミッションをそれに変えてみます
0414あぼーんNGNG
あぼーん
0415nobodyさん03/07/06 12:55ID:???
>>412
なぁ、CGIが700なのにplをowner以外に公開する意味はあるのか?
0416nobodyさん03/07/06 12:55ID:o+D1+xYE
>>412 変更したけど相変わらずERROR出ます。
0417nobodyさん03/07/06 12:58ID:xIV38i+N
>>416
エラーが出ると言いながらエラーメッセージ書かないのはアホのすることです。
0418nobodyさん03/07/06 13:02ID:???
>>415
ああ、ほんとだw
0419nobodyさん03/07/06 13:03ID:???
ttp://auau.s35.xrea.com/ezmup でアクセスしてるんじゃねーだろーな・・・
0420nobodyさん03/07/06 13:11ID:???
この板ってさ、ほとんどスレ落ちないじゃん。

CGI設置について質問
http://pc2.2ch.net/test/read.cgi/php/1054216089/

↑こんなのまだ残ってんだけど、設置モノはそっちに振らない?
0421nobodyさん03/07/06 13:18ID:DtJTYCHd
>>419ちがいまふ http://auau.s35.xrea.com/ezmup/ezmup.cgi でアクセスしてます。
0422nobodyさん03/07/06 13:25ID:???
>>421
腹立つほどわかりやすいエラーが出てるんだが。

Error Message: No such file or directory
Error Number: 2



消えろ。
0423nobodyさん03/07/06 13:26ID:???
This message usually indicates there is a problem with the script itself. Often this indicates either that th
e #! line of the script is incorrect, or the script was uploaded in binary mode instead of ascii mode. Check
to make sure that the script does not have control-M's at the end of every line. That will prevent it from
An easy fix that takes care of this most of the time is to put '#!/.../perl --' instead of '#!/.../perl' on the first
line of the script.
If you are not the owner of this script, please forward this error and the URL that caused it to the script owner.
That is often the component in the URL right after /cgiwrap/.



思いっきり説明してあるじゃん・・・。
0424nobodyさん03/07/06 13:27ID:lvk82yLy
perlで掲示板を作っているのですが、ファイルの後方から
任意の行を読むにはどうすれば良いのですか?

$hoge=<HOGE>だと前方から1行読むだけですし、
@hoge=<HOGE>だと全部読んじゃいますし。
0425nobodyさん03/07/06 13:31ID:???
>>424
ストリームの性質上、スマートな解は無いかと。
0426nobodyさん03/07/06 14:00ID:???
>>425
そうですか…。
@hoge=<HOGE>でなんとかするのが無難ですかね。
0427nobodyさん03/07/06 14:12ID:???
>>426
whileで行数が一緒だったときそれを読むってのは?
0428nobodyさん03/07/06 15:07ID:???
>>427
それしかないよね。
あと、行数を数えて、「行数-n」行がどうたらこうたらとか
0429nobodyさん03/07/06 15:08ID:???
どうせ大した量じゃないんだから

@hoge=<HOGE>
$hoge[@hoge - n)

する。
0430nobodyさん03/07/06 15:15ID:???
>>426
「任意の行」ってのは一行?それとも数行のこと?
掲示板ならどっちもありえるが。
まあ、一行あたりのだいたいのバイト数が予測できるなら、
seekで読み始める位置ずらせば全部読むよりましになる。
0431nobodyさん03/07/06 15:18ID:???
>>430
>バイト数が予測できるなら
掲示板に関しては無理でしょう。\n読み逃した場合すべてがパーに。


って言うか保存時に最新記事が一番上に来るように保存しろと。
0432nobodyさん03/07/06 15:24ID:???
>>431
配列に入れたあと先頭の要素をshiftすれば良いのでは。
まあ、読み主体で考えると前から追加するのがスマートだね。
0433nobodyさん03/07/06 15:39ID:???
こんなに書き込みが…。
皆さん、ありがとうございます。
教えられた方法をもとにいろいろ試してみます。

>>430
数行のことです。言葉が足りませんでした。
追加書き込みしてたので、後ろから50行とか40行とか
読む方法を探していたんです。
0434nobodyさん03/07/06 17:57ID:???
>>433
http://www.din.or.jp/~ohzaki/perl.htm#File_Tail

こういう方法もある。

というかこれ、俺が書いたコードなんだがこんなところに載ってたのか。
なんかバグ直してあるし。

>>426>>429
掲示板のログって数MBになることも珍しくないから、規模によっては致命的な
負荷になると思う。

昔、$line++ while(<HOGE>);して行数数えて、もっかいゼロにseekして
読み直す方法を良く使ってた。
今は、ログに書き込むときに先頭が新しくなるように書き込むようにしてる。
0435nobodyさん03/07/06 18:41ID:???
>>434
でも、結局のところスマートな方法じゃないんでしょ?
0436あぼーんNGNG
あぼーん
0437nobodyさん03/07/07 00:14ID:???
書き込みは1回だけど、読み込みは理論上無制限なわけだから、
書き込むときに「読みやすいデータ構造」にしておくのが理想だわな。
0438nobodyさん03/07/07 11:24ID:???
>>436
とうとう脱がないとやっていけないくらい使い込んじゃったのか。

とうとう脱いだにワラタ
0439nobodyさん03/07/07 12:01ID:2fgNaco2
一般プロバイダに設置する日記システムを探してみたのですが、
以下のものは利用できないのでしょうか?

たぶんプロバイダの登録サイトの /cgi/ とかのフォルダ以下に
*.cgiファイルを設置するなどの方法でいいのではないかとおもっております。
何かの入門書で読んだ記憶があるので。

このサイトは、ツッコミ可能なWeb日記システム"tDiary"の公式サイトです。
http://www.tdiary.org/

日経Linux 2003年6...とあるので最近のものにはちがいないとわかりました。

動作環境
>・・・・・・CGIが実行できるWebサーバであれば、たいていは動くと思われます。
http://www.tdiary.org/20021110.html

プロバイダ(YBB!など?)やwebホスティングサイト(tripodとか?)のサーバー上に設置する
分には、上記のページ内の細かな条件はほぼ無視して考えてよいのでしょうか?
たぶん自前の回線でサーバーを設置する場合の条件を指しているの
かと思いましたが、いまいち区別すべき点がわかりません。
プロバイダのOS(?)とか言われてもよくわかりませんです。

この掲示板の「パソコン初心者板総合質問スレッドVol.417 」というところから、こちらの専門の場所に質問を移させていただきました。

上のリンク先のプログラムは初心者ながら、
どちかといえばかなり難しい種類のシステムであまり初心者向きでは
ないと自覚はしております。とりあえず例としてですけれども。
多機能のものの方が、不足になることはないとおもうので
いいのではないかとおもっています。
0440nobodyさん03/07/07 12:06ID:???
>>439
せめて自分でやってみてから質問してみてはいかがでしょうか?
ここは無料サポートセンターとは違いますよ。
0441nobodyさん03/07/07 12:58ID:0RPZS0uj
>>439
>>440
ご助言ありがとうございました。
Web制作 の
31: Webサイト制作初心者用スレ vol.60 (749)
に移動させていただきます。
sageます。
0442nobodyさん03/07/07 13:04ID:???
>>441
あくまで自分でやってみるという選択肢はないんだな・・・。

全然sageてないし。
0443nobodyさん03/07/07 18:14ID:rbHTk8WY
えと、質問です。
BBS(YY-Board)でSSIを動作させたくて、
CGIのHTMLヘッダ部分にSSIを埋め込んだのですが動作しません。
一応、htaccessに
AddType text/x-server-parsed-html .html .shtml .cgi
としてみたのですが同じです。
なにかまだやる事はあるのでしょうか?
それともCGIではSSI実行は不可能なのでしょうか?

よろしくお願いします。
0444nobodyさん03/07/07 18:29ID:???
>>443
> それともCGIではSSI実行は不可能なのでしょうか?

結論から言うとできる。スペースの管理者に聞け
それよりも SSI で実現しようとしている事を CGI でやればいいと思うが?
0445あぼーんNGNG
あぼーん
044644303/07/07 18:39ID:???
>>444
レスどうも。できますか。
ちなみに書き忘れましたが鯖はxreaです。
BBS以外のページでは動いているから動作自体は可能です。

>それよりも SSI で実現しようとしている事を CGI でやればいいと思うが?
SSIはexec cgiでCGIを呼び出す格好なんで、
おっしゃるとおり始めはCGIに呼び出し先のCGIを埋め込めばいいと思ったのですが、
どこに埋め込めばいいのかわからなくて。。
HTML出力部分に直接記述してもできないだろうし。
044744403/07/07 18:50ID:???
>>446
require すれば?exec cgi でやってる事なんなのか解らんけど
0448nobodyさん03/07/07 18:54ID:???
>>446
ここは作る人間が来るスレですよ。
044944303/07/07 18:59ID:???
>>447
おぉ、こんな便利なコマンド(?)あったんですね。
自分のCGI音痴にもほどがあるなぁ。
呼び出しCGIはCSS切り替えスクリプト(Cookieでlink relを判別するモノ)です。

ただこれではXML宣言の前に<link>タグが来ちゃって(・A・)マズーですね。
もうちょい勉強してみます。ありがとうございました!
045044403/07/07 19:01ID:???
思ったんだが、俺、perl として断定して答えてしまった…。
0451nobodyさん03/07/07 19:18ID:lnG7WYW8
いわゆる掲示板や検索・リンクシステムなどに代表される
データファイルを読み込んで展開するCGIに関してですが…

配列を読み込み表示する際に、
「foreach」を使うべきか「while」を使うべきかで悩んでます。

一般的にはforeachを用いた物が多いようですが、
使用した感じではwhileの方が簡単に感じます。
処理効率や他部分への取り回しの良さなどを考慮して、
どちらが良いと思われるのでしょうか?
0452nobodyさん03/07/07 19:29ID:2JuGMJAv
ggiっていうのか?
自分でBBSつくりたいんだけど、どうやって作んの?
どんな言語使うの?
0453nobodyさん03/07/07 19:37ID:???
>>451
perl だよな?
・while (式の内容を評価し、真である限りループ)
・foreach (配列の要素を順次取り出し、無くなるまでループ)
0454nobodyさん03/07/07 19:38ID:???
>>453
while(@a)
0455nobodyさん03/07/07 19:50ID:???
おや、豊地ですか…
質問スレなんだからちゃんと答えろよクズども
0456nobodyさん03/07/07 19:51ID:???
>>455
誰だよおまえ?
■ このスレッドは過去ログ倉庫に格納されています