トップページ⇒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 あたりに
0577nobodyさん03/03/09 19:31ID:???
>>576
>とあるCGIにファイルをダウンロードするフォームがあるんだけど、

この辞典で訳がわからなくなった。
0578nobodyさん03/03/09 19:34ID:048q+sGA
http://bbs.1oku.com/bbs/bbs.phtml?id=rantyan
★その目で確認すべし!!★超おすすめ★
057957603/03/09 19:37ID:zYZaV2tZ
>>577
ダウンローダーとかファイル管理CGIとか、そんなようなやつ。
------
| DL |
------
↑ボタンを押すと選んだファイルがDLされるっていう動作になるはずが
ならないんだよ・・・。
0580nobodyさん03/03/09 19:51ID:???
>>579
Content-Typeがおかしいのでは?
0581nobodyさん03/03/09 20:36ID:???
>>579
>>580だと思う。application/octet-streamになっている?
0582nobodyさん03/03/09 20:37ID:???
さすが通信分野だよな。バイトストリームじゃなくてオクテットストリームか。
0583nobodyさん03/03/09 20:38ID:???
>>582
MIMEを通信と言い切ってしまうにはちょっと抵抗あるけどな。
0584nobodyさん03/03/09 20:41ID:???
>>583
MIMEって通信以外でも使われているの?
0585nobodyさん03/03/09 20:43ID:???
>>584
どっちかというとワイヤプロトコルだからちょっと違和感って感じ。
0586nobodyさん03/03/09 20:46ID:???
>>585
言いたいことが分かったような分からないような・・
まあちょっと違和感と言っているから全く筋違いというわけでもなさそうだな。
0587nobodyさん03/03/10 00:12ID:p/bgqDIW
cgiでmp3のID3タグの内容を取得できないでしょうか?
0588nobodyさん03/03/10 00:21ID:???
>>587
ファイルをバイナリとして分解してID3部分を取り出せばできますが
0589nobodyさん03/03/10 00:35ID:???
ID3v2のCOM使えば瞬間芸の予感
059058703/03/10 00:47ID:???
すんなせん、もうちょっとヒント下さい。
0591nobodyさん03/03/10 01:17ID:???
>>590
>>589をミロ
059258703/03/10 01:32ID:???
すんません、ID3v2のCOMがわからないです・・・

バイナリで取得するって事ではない、んですよね?
0593nobodyさん03/03/10 01:37ID:???
>>592
検索の仕方も知らないのか?プログラム書くのはこれっきりやめろ。
http://216.239.39.101/search?hl=ja&ie=UTF-8&oe=UTF-8&q=ID3v2+%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
普通のライブラリもPerlモジュールもどっちも1分で見つかったぞ。
059458703/03/10 01:51ID:???
すいませんCOMの意味を知らなかったんで・・・、

検索行ってきます。

ヒントありがとう。
0595nobodyさん03/03/10 15:33ID:waQu7wS1
はじめてCGIでカウンタを付けようとしている初心者です。
相談にのっていただけませんか。

借りているサーバーがパーミッションの設定・変更はできないと書いてあり、
FTPソフトでいじることができませんでした。
CGIの実行やCGIによるファイルの読み書きにつきましては、
パーミッションの設定・変更なしに利用できると書いてあったので
実際CGIをアップしてみたのですがエラーになって表示されませんでした。

CGIが間違っているせいなのか、パーミッション変更不可のため動かないのか、悩んでいます。
0596nobodyさん03/03/10 16:05ID:???
age
0597nobodyさん03/03/10 16:24ID:y6h+x0ia
>>595
説明不足でよくわかりません。
どこのサーバーとか、
そのサーバーの設定等がWEB上で見れれば何とかなるんだが・・・。
(たまに説明をWEBでしてるところあるよね)

とマジレスしてみるテスト。
059859503/03/10 16:24ID:???
いろいろ検索してみたのですが、パーミッションの変更ができないということは
そもそもCGIの設置は無理なのかもしれません。
念のため、使っているサーバーのCGIについてのページを貼ります。
やっぱ無理でしょうか?
↓
ttp://www.onamae.com/help/18-5.shtml
0599nobodyさん03/03/10 16:28ID:???
>>598
/*
プレミアサーバーの仕様は?
仕様は以下の通りとなっております。
・Microsoft Windows2000 Server
・Microsoft Internet Infomation Server(IIS)5.0
・Microsoft Exchange2000
なお、Perlはバージョン5.6.1を使用しております。
*/

よって、UNIX特有のパーミッションという概念はありません。
0600nobodyさん03/03/10 16:30ID:???
>>599
Winじゃん。
ローカルで動作確認できるんじゃないの?
060159503/03/10 16:33ID:???
>>599 ありがとうございます。

パーミッションという概念がない場合、
どんなCGIも自動で機能するのでしょうか?
それとも、それ用のCGIを選択して使用するべきなのでしょうか?
先ほど試みたのはKENTWEBのeカウンタというものです。
(いちばん簡単そうに見えたので)
ttp://www.kent-web.com/count/ecount.html?
0602nobodyさん03/03/10 16:34ID:M2RJhlYt
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
★その目で確認すべし!!★超おすすめ★
060359503/03/10 16:35ID:???
>>600
ローカルで動作確認ですか?
意味すらわからないレベルなので、ちょっと検索して調べてきます。
ほんとに知識不足で申し訳ありません。
0604nobodyさん03/03/10 16:44ID:???
>>603
先に >>598 と >>601 みたいな情報を出すようにしてくれ。

で、暇だったので試してみたけど、中身まったくいじらなくても置くだけで
http://(略)/ecount.cgi?check は動作したよ。
こちらは Apache + ActivePerl で IIS じゃないけど、まあ変わらんでしょ。
060559503/03/10 17:05ID:???
>>604
今、中身をいじらずにアップしてみましたが
ログファイルのパスが不正です:./ecount.dat
ログファイルのパーミッションが不正です
と表示されてしまいました。やっぱり駄目みたいです。ああ。。。

ローカルで動かすにはソフトをダウンロードしなくてはならないようなので
また後で来させていただきます。
どうもありがとうございました。
0606576=57903/03/10 17:13ID:AgGCKLX9
>>580
>>581
回答ありがと。
チェックしてみたらこうなってました。
print qq(Content-type: application/octet-stream\nContent-Disposition:attachment;filename=$1\n\n);
これでいいんですよね?
というか、他のサーバーではできたから問題はここじゃないような気がするんですけど・・・
#octet-streamなんて初めて見た・・・(汗)
0607nobodyさん03/03/10 17:17ID:y6h+x0ia
>>605
ならば、ttp://www.onamae.com/help/18-5.shtml
の「Perlでパスの指定がうまくゆかない。」の項目をよく見よ。
このサーバーの厄介なところじゃないかな。
060857603/03/10 17:33ID:AgGCKLX9
>>595
>CGIの実行やCGIによるファイルの読み書きにつきましては、
>パーミッションの設定・変更なしに利用できる
これって、パーミッションが「何でも動く」んじゃなくて、
パーミッションをサーバーが自動で変えてくれる、って意味じゃない?
・・・私が前いたサーバーはそうだった。
だからパーミッションの問題じゃないと思う。
で、同じ問題にぶつかった事があるんだ。詳しい人に聞いたらこういう事だったよ。
:アップしたCGIが動かないのはCGIスクリプトに問題があるのではないか。
:サーバーで使ってはいけないってなってる命令語が含まれていないか。
:含まれていればUPしても使えない(こともあるかも)。
#ここでいう問題ってのは、「スクリプトがまちがっとる!」ということ
#じゃないぞ。そのサーバーで使うのに問題があるってこと。

たとえばセキュリティの問題で、カウンタに使われることのあるSSIは禁止
だとかさ。ファイルを作る命令語はダメだとかさ。
あなたのサーバーって、そういう制限を設けてるサーバーじゃないの?
もっとも・・・「制限がある」ってなっても、初心者だったらスクリプト見て
「これは制限されてるのがある・ない」ってわかんないと思うから、
ヘタの鉄砲数うちゃ当たるってなもんで、入れてみて動くものを使うようにす
ればよいと思う。
#んで、ローカルでのテストは意味ないんじゃないかな。こういう時って。
060957603/03/10 17:38ID:???
>>607
ほうほう・・・そういうところもあるんだね・・・。
絶対パスか。
0610nobodyさん03/03/10 17:53ID:???
>>605
それは「動作してる」よ。意図通りに動いてはいないけれどね。
次からは、1.サーバエラーが発生したのか、2.意図通りに動かないのか、
を明記するようにして欲しい。

>>609
>#んで、ローカルでのテストは意味ないんじゃないかな。こういう時って。
問題の切り分けがきちんとできており、最初から、問題は
サーバの仕様にあると限定できるのであれば、おっしゃる通りです。
でも今回の場合は(ry

061159503/03/10 18:02ID:???
>>607
うわーーーーー!出来た!出来たよぅ!
もう涙が出そうにうれしい。。。
ほんとうにありがとうございました。感謝!
0612nobodyさん03/03/10 18:05ID:???
>>606
そのCGIにtelnetでHEADリクエストしてもちゃんとoctet-stream返って来るかい?
061359503/03/10 18:09ID:???
>>608-610
どうもありがとうございました。
608さんのおっしゃるとおり、
サーバーはパーミッションを自動で変更してくれたようです。
それで607さんの絶対パスについてのところを参照にCGIのパスをいじったところ、
DATファイルが反応するようになり、
GIFファイルも直したら反応するようになり、
サーバー上でカウンタが動くようになりました。

610さん、申し訳ありません。
サーバーエラーなのか、意図どおりに動かないのかすら判断できなかったのです。

みなさん、ほんとうにありがとうございました。
061460603/03/10 18:27ID:AgGCKLX9
612>>
telnetできないっす。
こりゃCGIの問題じゃなくって、サーバーの仕様とかかな?
・・・そういう仕様って、アリ?
061560803/03/10 18:30ID:AgGCKLX9
>>595
治りましたか。よかったよかった(^^)

サーバーエラー>紛らわしいよね(笑)
061660603/03/10 18:32ID:AgGCKLX9
>>614
言葉がたりんかった。
Telnetできないのは、Telnet開放されてないから(^^;
0617nobodyさん03/03/10 18:33ID:???
>>616
Port:80 に telnet せよ、という意味じゃないの?
0618nobodyさん03/03/10 18:49ID:???
Win2000のtelnetなら23以外にもアクセスできるよな。
0619nobodyさん?03/03/10 20:23ID:???
>>485はなんで?
0620nobodyさん03/03/10 20:53ID:???
管理サイドの人間しかわからんのでわ?
0621nobodyさん03/03/10 20:58ID:???
>>619
規制されないリモートホストとポートをCGI串が吐いているからだろう
062260703/03/10 21:38ID:y6h+x0ia
>>595
おめでとう。(カメレススマソ)
0623nobodyさん?03/03/10 21:59ID:???
>>621
リモホはwww15.big.or.jpだし、80番ポートは空いてるよ
062461203/03/10 22:26ID:???
>>616
>>617です。

telnet www.hogehigehage.com 80

HEAD /unko.cgi HTTP/1.x
0625nobodyさん03/03/10 23:22ID:F/vwue5x
yukiwikiを実験で設置してみたのですが、いまいちだったので
FTPから丸ごと削除しようとしました。そうしたら、/diff/, /info/, /wiki/
というディレクトリ及びその中身のファイルが、Permission Deniedと言われ、
削除できずに残りました。どのようにすれば削除できるのでしょう?
0626nobodyさん?03/03/10 23:25ID:???
FTPクライアントが何かわからんけど
ディレクトリに書き込み権限がないんじゃないの?
062762503/03/11 06:17ID:???
自己解決しました。nobody権限のファイルがcgiによって作成されていたみたいです。
cgiによって作られたファイルはcgiからでないと削除できないと分かり、
ファイルをunlinkして回るcgiを作って走らせたところ、無事消えました。
0628nobodyさん03/03/11 09:12ID:???
>>627
otherに権限持たせれば出来ると思われ。
0629nobodyさん03/03/11 16:29ID:mYfv1t4y
本当に初歩的な質問だと思うんですが、
どれだけ調べてもヒントすら見つからないので、
全く見当違いなことを考えてるんだと思い質問させていただきます。

ディレクトリを作るのはmkdirですよね。
ならファイルを生成するのはどうしたらいいんでしょうか?

たとえばtestというディレクトリを作り、
その中にtest.datというファイルを作る
なんてことはどうすればできるんでしょうか?
0630nobodyさん03/03/11 16:35ID:???
取り敢えず下記でできる。
open(FILE,">>ふぁいる名");
print(FILE "でーた\n");
close(FILE);
0631nobodyさん03/03/11 16:39ID:???
>>629
Perlですか?
言語(or環境or状況)を書くように
0632nobodyさん03/03/11 17:41ID:04f/wl45
CGI配布サイトなんかに行くと、「軽い掲示板」「重い掲示板」っていう
表現がありますよね。処理が軽いとか。
この「軽い」「重い」って・・・?

設定項目(=変数)が多いと重い?
サブルーチンが多いと重い?
それとも行数が多いと重い?
コメントが含まれていると重い?

どんなんでしょ?(ちなみにPerlCGIで。)
0633nobodyさん03/03/11 17:47ID:???
>>632
レスポンスタイムが遅い。ターンアラウンドタイムが遅い。
0634nobodyさん03/03/11 18:06ID:???
>>632
>設定項目(=変数)が多いと重い?
>サブルーチンが多いと重い?
>それとも行数が多いと重い?
>コメントが含まれていると重い?

すべてNO
厳密に測定すれば差は出るだろうけど
0635nobodyさん03/03/11 19:32ID:???
>>632
プリントアウトした時の紙の重さじゃないの?
0636nobodyさん03/03/11 19:51ID:???
>>635
それを言うなら、仕様書の
0637nobodyさん03/03/11 19:56ID:???
作者の愛情の重みだよ。
0638nobodyさん03/03/11 20:03ID:???
無限ループは愛情があふれているんだね・・・・・・
0639nobodyさん03/03/11 20:08ID:???
>>638
藁
0640nobodyさん03/03/12 06:35ID:???
>>638
溺愛しすぎも良くないよね。
0641nobodyさん03/03/12 10:34ID:???
なごんだ
0642nobodyさん03/03/12 19:04ID:???
色んな所でKENT氏のlogを配列に入れてforeach()するのは悪いとあるんだけど、
どうしたら良いの?
while使っても大差ないと思うんだけど。
0643nobodyさん03/03/12 19:14ID:???
>>642
そう言うレベルの話じゃないと思う。
0644nobodyさん03/03/12 22:04ID:???
>>642
違いがわかるようになってから出直してください。
0645nobodyさん03/03/12 23:22ID:???
何で悪いかは理解してるのか?
もう春なんだなあ・・・
0646nobodyさん03/03/12 23:47ID:???
>>643-645
質問スレに馬鹿なレス返すな。
もう春なんだなぁ・・・
0647nobodyさん03/03/13 00:09ID:???
>>646
手本で納得できるレス返してみれ
0648nobodyさん03/03/13 00:15ID:???
cgiから別のcgiを起動して値を取得して処理する
ということをやりたいのですが、可能ですか?
0649nobodyさん03/03/13 00:16ID:???
>648
Perlならrequireで検索。
0650nobodyさん03/03/13 00:55ID:???
質問です
config.plに$test = test;を入れといて、
print.cgiにprint "$test";って入れて表示させる方法ってどうやるんですか?
よろしくお願いします(plの1;やcgiのヘッダーはできているとする)
0651nobodyさん03/03/13 01:08ID:???
>>650
普通にrequireすればいいんでないの?
0652nobodyさん03/03/13 06:33ID:???
>>651
なんかだめです
065364803/03/13 08:31ID:9FkJfCBr
>>649
ごめんなさい
もう少し詳しく書きます
別のcgiは別のサーバにあります。
で、POSTでそのcgiに値を渡し
そのcgiが(ブラウザに)出力する結果を元に
処理を行う、それをいくつか繰り返す

以上の事をcgiで行うことは可能でしょうか

0654nobodyさん03/03/13 08:59ID:???
>>653
可能
ただし、これ以上の質問は使っている言語専用スレで

> cgiで行うことは可能でしょうか
cgi の部分を、PerlなりPHPなり自分が使っている言語に
置き換えて読み返してみれば、すぐ解ることでしょが
0655nobodyさん03/03/13 09:09ID:Lbm4LPV1
見て
http://homepage3.nifty.com/digikei/
0656bloom03/03/13 09:18ID:+b8Vztun
http://www.agemasukudasai.com/bloom/
065763203/03/13 15:56ID:rD3WUou4
>>633
ちょっと質問悪かったかも。

重い・軽い・っていうのは、どういう作りによっておきるのか?
と、聞きたかったのです。
それで、設定項目が・・・なんてことを言ったのですが。

>>634
うーん、そっか。
んじゃあとりあえず、40KBとかあるスクリプトが必ずしも
重いとは限らないわけね。
0658nobodyさん03/03/13 15:58ID:???
>>657
>>634って結構眉唾。
0659nobodyさん03/03/13 16:38ID:xb4yxiHK
futomi's cgi cafe、のprofessional版を使用とすると
アクセス解析するページを見ると、×印が表示されます。
FAQの
http://www.futomi.com/library/faq/acc_faq.html#1
は見ました。
standard版だと上記の方法で×印が表示されないようには出来たんですが
professional版だと駄目でした。
サーバーはxreaの無料鯖を使ってます。
×を表示しないようにする方法を知ってる方がいたらぜひとも!
教えてください。
0660nobodyさん03/03/13 16:41ID:???
>>659
私は、このウェブサービスが、初心者向けサービスでないことを知っています。最低限必要な情報しか提供していないことを知っています。

私は、問題を自分で解決する努力をします。わからないことはまず自分で調べます。


(XREA 規約より)
0661nobodyさん03/03/13 16:45ID:???
>>659
ちゃんと設置できているなら広告のせいだろう
066265903/03/13 16:47ID:???
出来る限り調べたのですがどうしても分からなかった為。
やった事を書くのを忘れていたので書かせて頂きます。
自動広告表示が原因だと思うのですが
自動広告をやめてhtmlに直接タグを書いて広告を表示しても
×印が消えなかったです。
futomi's CGI Cafe のFAQではこれで×は消えると書いていたのですが
駄目でした。
検索エンジンでも調べてみましたが駄目で、
自分で言うのもあれですが努力はかなりしました。
出来れば解決方法が分かれば教えてください。
宜しくお願いします。
0663nobodyさん03/03/13 16:47ID:???
>>657
重い = 処理時間が長い
つまり効率的な処理ができていないものと言える。
(処理そのものが複雑な場合もあるが、それはとりあえず置いておく)

効率的な処理というのは、>>632で挙げられたことと全く関係がない
わけではないが、そこに大きな関係を見出すことは難しい。
また処理の方法というのは、ほとんどの場合幾通りものアプローチが
あるもので、どれが効率良いかは試験と経験でしかわからない。

というわけで、ネット上で配布されているようなものに関して言えば、
使ってみるかソースを読んで解析するかしないとわからないよ。
既ユーザに使用感を聞いてみるのが一番簡単な方法かもね。
0664nobodyさん03/03/13 19:07ID:ajLCHyyn
保守あげ
0665nobodyさん03/03/13 19:47ID:???
>657
>設定項目(=変数)が多いと重い?
設定項目が多くても、処理が少なければ軽い。

>サブルーチンが多いと重い?
サブルーチンが少なくても、全体の処理が多ければ重い。

>それとも行数が多いと重い?
たった1行でも無限ループになっていたらそっちの方が重い。

>コメントが含まれていると重い?
誤差の内。

結局は、計算機が計算を行なう回数と、ファイルアクセスなどを行なう回数及び時間に関わる。
結果として、>663さんの言うのが正しいわけだが。
どういう作りで、というなら、シンプルな方が軽い。
もちろん、下手な奴が作ればシンプルでも重くなるが。
あとはベンチマークでもやって自分で計るのが一番。
いうまでもないがローカルでな。
0666nobodyさん03/03/13 20:32ID:???
6666666666
0667nobodyさん03/03/13 21:37ID:???
しかし、4、50kbもあるソースなんて書く方が辛くない?
出来る範囲で分割させた方が管理しやすいと思うんだけど。
書き込みと表示を分けるとか。
0668nobodyさん03/03/13 21:40ID:???
>>667
関数作らずに平気で2000行とか書く人なんですよ。きっと。
0669nobodyさん03/03/13 21:49ID:0oN+bQDd
普通、1関数何行ぐらい?
0670nobodyさん03/03/13 21:57ID:???
平均10行未満 最長でも80行
一画面に収まらない関数を作った場合は再検討する。
0671nobodyさん03/03/13 22:26ID:???
インデントが4つ以上の深さになったら他のいい書き方がないか考えてみよう。

これについては、C-BOARDは強烈。画面をまたぐifのブロック。
0672nobodyさん03/03/13 23:58ID:???
私も、大体10〜20行ぐらいかな。
1ファイルは大体20kb以内。500行ぐらいが己の限界です。
2000行なんて書いてたら、思いついた所を探す時には、泣いちゃうよ〜。
0673nobodyさん03/03/14 00:05ID:???
>>672
>これについては、C-BOARDは強烈。画面をまたぐifのブロック。
あなたが挙げているインデントの増加という面ではこれはむしろその抑止に働いていると思う。


kbだから大体2KBってとこか。平均10文字で200行。微妙かも。
0674nobodyさん03/03/14 00:14ID:???
childシリーズってレンタル鯖で禁止されるほど禿負荷なんだよね。
0675nobodyさん03/03/14 15:39ID:d7q/oEUS
皆さん、コメントとかつけないのですか?
ちゃんとコメントつけると、私は数十行などすぐ逝ってしまいます。
0676nobodyさん03/03/14 15:46ID:???
>>675
君のソースを読んでみたい
■ このスレッドは過去ログ倉庫に格納されています