• ベストアンサー

CGIわかる人、教えて下さい

CGIのことでお聞きしたいんですが、 フリーのCGIスクリプトをカスタマイズし、 HPに載せようとしたんですが、 エラーがでます。 カウンターなのですが、そこには (NO log file)と表示されます。 アクセス権もしっかり設定したのだが、 何がおかしいんでしょう? おそらく、予想では以下の設定がわからないからと思っています。 $log_d= ".";  # ログ生成ディレクトリ(絶対・相対パスで 最後の / は省く) これは、どうゆうふうに書いたらいいのでしょう。

  • CGI
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • Haizy
  • ベストアンサー率40% (404/988)
回答No.3

こんにちは。 なぜ? というか、よくあるパターンとか、一般的な確認点、対処とか・・・ 有りそうなフレーズ並べてみるテスト(^^; ヒント程度になれば、幸いです。 >$log_d= ".";  # ログ生成ディレクトリ(絶対・相対パスで 最後の / は省く) ログファイルが logfile.txt だとして、同じディレクトリにある場合 $log_d="logfile.txt"; となるはず。相当特殊な組み方しない限り、こうなるはずですが? さらに、空っぽのファイル(空のメモ帳を保存したファイル)をあらかじめ作ってあげないといけないヤツとか、結構有りますが。その辺をもういっぺん確認してみてください。 $log_d="ディレクトリ/logfile.txt"; とか、(他のディレクトリ内にログ) $log_d="../logfile.txt"; とか一つ上のディレクトリにログ あと、ファイルの属性は書き込みができるように 606 が普通でしょう。ま、この辺は、666であったりと「サイト次第」なところ有るので、サイトのマニュアルに従ってあげてください。 でわ

peter8
質問者

お礼

お返事ありがとうございました。 現在、CGIスクリプトと悪戦苦闘しています。 HTMLのようにうまくいかないですね。

その他の回答 (3)

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.4

Not logfile=ログファイルがありません ログファイルが読み込めなくてエラーが出ているのですね。 問題の > $log_d= "."; ですが、ここを修正すれば動くはずです。 コメントに > # ログ生成ディレクトリ(絶対・相対パスで 最後の / は省く) とありますよね。 peter8は”相対パス”で入力する方が良いでしょうね。(技術・知識的な問題です) ディレクトリの指定は、例えばログファイルが「./log/ログファイル」にあるのなら、そのディレクトリは「./log/」となりますよね。 そこから最後の/を省いた「./log」が正解です。 $log_d= "./log";としてやりましょう。 (「$log_d/ファイル名」という形式でスクリプト中で使われるはずです。) この「log」ディレクトリ(フォルダ)はご自身で作って、ディレクトリのパーミッションは「777」にして下さい。 「生成」とありますから、自動的にそこにファイルが作られると思います。 #1の方もおっしゃってますが、ダウンロードしてきたスクリプトなら、まず製作者の方に聞いてからここに来られた方が良いと思いますよ? 製作者じゃないと、やっぱり回答がちょっとずれてしまったりしますから…

peter8
質問者

お礼

お返事ありがとうございました。 現在、CGIスクリプトと悪戦苦闘しています。 HTMLのようにうまくいかないですね。 せっかくCGIの使えるサーバに移動したのに・・・。

noname#225520
noname#225520
回答No.2

うーん、「おなかが痛いのですが、何故でしょう」と言われているようです。これだけですと何もわかりません。 そのCGI(Perlで書かれているのですよね?)がログファイルを自動生成するのか?予め用意しなければならないのか?そこらへんはソースを見てみないとわからないです。 NO log fileと表示されるのですから、スクリプトはちゃんと動いてますね。ログファイルが見つからない、ということなのでそのあたりを再度チェックする必要はあります。

peter8
質問者

お礼

ありがとうございます。 なにせ、CGIの勉強も 始めたばかりでよくわかりません。 本を読んでもわからない・・・。 とにかく、もう一度調べます。

noname#8250
noname#8250
回答No.1

う~ん。もらってきたCGIスクリプトならばそのサイトの掲示板で聞きましょう。常識です。だって作っている人、使っている人が答えてくれるわけですから。 >$log_d= ".";  # ログ生成ディレクトリ(絶対・相対パスで 最後の / は省く) >これは、どうゆうふうに書いたらいいのでしょう。 言葉そのものの意味です。あなたがログファイルをどのディレクトリに置くかを指定するものです。 そのファイルから見てログ保存用ディレクトリはどこにあるかを指定すればいいのです。(相対パスの場合)多分ログ保存用ディレクトリは自分で作って指定するんだと思います。この意味も分からないのならば設置は止めた方がいいです。配布先で説明がされているはずですよ。 初心者だからと勉強しないのはよくありません。CGIスクリプトの場合エラーが出ると場合によってはサーバに多大な負荷を与えることになるのです...とプロの旦那にいわれました。(T.T)

peter8
質問者

補足

回答ありがとうございます。 その常識はわかっているつもりです。 CGIスクリプトもメインの記述を変えることは しません。 ただ、わからないのはURLは×とありまして フォルダだけを指定したら、エラーになるのです。

関連するQ&A

  • CGI(BBS)の設置が出来ません(2)

    --------------------↓ # ログディレクトリ (フルパスだと / から) $log_dir = "."; ↑これは「/bbs.log」と入れるのでしょうか? ちなみに上記全ての書類はcgi-binで同階層です。 # 表示ファイルディレクトリ (フルパスだと / から) $htm_dir = "."; ↑これもよく分かりません。 # CGIスクリプト自身をURLで指定 $script = "http://www.●●●.ne.jp/cgi-bin/lomobbs.cgi"; ↑の様に入れましたが合っていますでしょうか? # 表示ファイル (index.html) のある「ディレクトリ」をURLで指定 $htm_url = "http://www.●●●.ne.jp/cgi-bin"; # ログファイル名 $logfile = "bbs.log"; # ロックファイル名 $lockfile = './bbs.lock'; # 過去ログのあるディレクトリ (フルパスだと / から) $past_dir = "."; # 補助プログラムのファイル名 $subfile = './bbs2.cgi'; ---------------------------- 以上、アヤシイ個所を書いてみました。 おかしな個所があれば教えてください。 ちなみに、DLしたcgiの書類名を変更したのですが、 それは何か影響はありますか? いくらやり直してもページが表示されません。

    • 締切済み
    • CGI
  • CGIをHTML(scriptタグ)上でうまく呼び出せない

    お世話になっております。 ご存知の方いらっしゃいましたら、ご教授願えますでしょうか? HPにアクセスカウンタを設置したいと思い、 http://apps.cside.com/cgi/counter/jscnt/ こちらのアクセスカウンタをお借りして CGIのテストを兼ねてtest.htmで呼び出したいので、 test.htmに以下のような記述をしました。 ------------------------------------------------------------------------ <html> <head> <title>top</title> <script language="JavaScript" src="./jscnt/cnt.cgi"></script> </head> <body> </body> </html> ------------------------------------------------------------------------ また、こちらのCGIの説明ページに書いてある通り、 以下のように設置しました。  html/(レンタルサーバのメインディレクトリ)  │  ├ test.html ……………………… (755) カウンタ呼出しHTML  │  └ jscnt/  ………………………… (755) プログラムディレクトリ    ├ cnt.cgi …………………… (755) カウンタcgiファイル    └ data.cgi ………………… (666) カウント数記録ファイル 以上のように設定したのですが、真っ白のページが表示されるだけで、 カウンターが出ません・・・。 他に設定や何かタグ等を追加する必要があるのでしょうか? お手数ですが宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • auone netでのcgiカスタマイズに関する質問です。

    auone netでwebサイトを設置するためにアカウントを取得しました。 アクセスカウンタを設置する上で困ったことがおきました。 cgi設定ウイザードからカウンタを作ったのですが、テンプレートファイルのカスタマイズをしたくても、cgi-dateフォルダの中に何もファイルがないので、カスタマイズできません。 アクセスカウンタのcgiファイルはどこにあるのでしょうか? テストページを作ってカウンタをとりあえず表示させてみたらきちんと表示されたので、cgi設定ウィザードから設定がまだということはないと思います。 ftpソフトはffftpを使用しています。 auone netでカスタマイズしたカウンタを利用してる方いましたら、ご教授いただけますでしょうか。 よろしくお願い致します。

  • OSXでcgi

    OSXでperlで作ったcgiを動かしたいと思い色々といじってるのですが全く動きません。 apacheのhttpd.confの設定で AccessFileName .htaccess AddHandler cgi-script .cgi AddHandler cgi-script .pl についてはコメントをはずして使えるようにして Perlのパスも#!/usr/bin/perlとしてsiteフォルダとcgiを置いてるディレクトリに.htaccessを下のように記述して作り AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ パーミッション設定をちゃんとしてあげてるのですがブラウザからアクセスするとForBiddenとでてしっかりと設定してるはずのパーミッション設定が間違ってますと言われてしまいます。 OSXでcgiを動かすには他にももっと色々と設定しなければダメなんでしょうか?

    • ベストアンサー
    • Mac
  • すみません、二度目です。fedora core3でcgiが動きません。

    すみません、以前も質問したのですが、残念ながら解決に至らなかったので ここでまた質問させていただきました。お詳しい方のアドバイスをよろしくお願い致します。 cgi-binの中にauctというディレクトリを入れその中にあるindex.cgiにアクセスしたいのですが http://localhost/cgi-bin/auct/index.cgi とアクセスすると、500 internal server error となってしまいます。 httpd.confの設定は scriptalias /cgi-bin/ "/var/www/cgi-bin/"を                     ↓ alias /cgi-bin/ "/var/www/cgi-bin/"と変え(#は外しています)、 <Directory "/var/www/cgi-bin"> のoptionsをnoneからExecCGIにしました。 あと #AddHandler cgi-script .cgi の#は外しました。 scriptaliasをaliasに変えたのはindex.cgiにアクセスすると、同ディレクトリ内にある、start.shtmlというファイルを開くという設定になっているので、それをCGIと認識されないようにするためにしました。 そのほかはデフォルトの状態ですので、documentrootはvar/www/htmlです。 各CGIのperlのパスは#!/usr/bin/perlとしていて 実際そこにperlがあるか確認もしました。 設定した後httpdの再起動もしました。 error log は premature end of script headers: index.cgiと File does not exist: /var/www/html/favicon.ico となっています。 この設定でWindowsのapacheはCGIが動作したのですが、fedora core3ではうまくいかないのは どうしてでしょうか?アドバイスお願いいたします。

  • 'cgi-lib.pl'などのファイルの位置は?

    Perlの基本的な質問ですが、cgi-lib.plやjcode.plは どのディレクトリに入れれば自然でしょうか? 私はLinuxとWindowsの両方にPerl5.6を入れておりまして、今までは相対パスによって、スクリプトの近くに置いていましたが、ディレクトリ(フォルダ)が変わるごとに設定しなおしで面倒になってきました。 WEBでもレンタルサーバーなど利用したことは無いんですが、このような基本ライブラリは、require 'cgi-lib.pl';で呼び出して?いると思いますが、 しかるべき位置にこのファイルが無いとだめだと思います。ご教授ください。

    • ベストアンサー
    • Perl
  • パールスクリプトを呼び出すときのパスの指定について

    わたしはあるインターネットのスクールに通っていたのですが パスについて頭が混乱しています。 CGIのコースのアクセスカウンターの授業で ディレクトリ構造が /usr/home/www/s1000000/cgi-bin/counter.pl となっているパールスクリプトをhtmlファイルのimgタグで呼び出すとき <img src="/usr/home/www/s1000000/cgi-bin/counter.pl?NAME=username&KETA=4">(その1) と記述したらうまく動作せず、 <img src="/~s1000000/cgi-bin/counter.pl?NAME=username&KETA=4">(その2) と訂正され、解決しました。 サーバのローカルルールでホームディレクトリのファイルは/~で呼びだせるように なっているようなのですが、それならば(その1)と(その2)は 同じことだと思うのです。 パスの相対指定はわかるのですが、絶対指定やurl指定がわかりません。 (その1)は絶対指定で(その2)はurl指定ということなのですか? (その1)と(その2)の違いは何ですか? なぜ(その1)では動作しないのですか? パスの根本的なところを知りたいです。 どなたか教えていただければ幸いです。

    • ベストアンサー
    • CGI
  • CGIファイル内の CGI呼出しのパスについて

    CGI 内からの .cgi ファイルの呼出しのパスについて質問があります。 動作環境は linux - apache - perl です perl の cgi ファイル内で次のように、同じ /cgi-bin ディレクトリ内の reset.cgi をコールしています。 ========== #!/usr/bin/perl (省略) if($form[0] =~ /reset/){ `reset.cgi`; } ========== バッククォートで実行していますが、これでは動作せず、 ./reset.cgi と ピリオド,スラッシュを前に付けると動作します。 少し調べた結果、カレントディレクトリのパスが通っていないのかと考え、 /etc/profile の PATHに下記のように ピリオド を追加してリブートしたところ、 export PATH=$PATH:. ホームディレクトリなどで作成した シェルスクリプトは ./ なしで動くようになりましたが、 /cgi-bin ディレクトリ内の前述のような呼出しは動作しませんでした。 後は httpd.conf などの編集が必要なのかもしれませんが、 良く分かりませんでした。 申し訳ありませんが、教えて頂けると助かります。 よろしく御願い致します。

    • ベストアンサー
    • CGI
  • 特定のCGIだけ、作動するかわりにダウンロードされてしまいます

    いつもお世話になります。 今日、カウンタのCGIと、そのカウンタをセッティングするCGIを二つのサーバに設置したのですが、片方のサーバに設置したセッティングCGIがおかしいんです。 本当ならアクセスするとパスワードを求める画面になるはずですが、「次の場所からダウンロードするように選択しました」という、Windowsではおなじみのダイアログが現れて、そのパスワードを入れるページ自体をダウンロードすることになってしまいます。 ここで「ダウンロード」にせずに「上記の場所から開く」にすればパスワード入力画面は開くのですが、これはローカルディスク上で開いていることになりますから、もちろんCGIとしては作動してくれません。 しかし、こんな現象が発生してしまうのはWin98やWin MEでアクセスした場合で、Macでアクセスすると正常にパスワードを求めてきて、もちろんそのまま認証してカウンタのメンテができます。 また、このWinで正常に作動しないのは2つのサーバに設置した内の片方だけで、全く同じものを全く同じ名前とセッティングでアップしてある、もう一つのサーバ上のCGIはMacでアクセスしようがWinでアクセスしようが正常に作動するのです。 しかも、異常がある方のCGIと同じディレクトリにアップしてある、他のCGIは全て正常に作動するのです。 パーミッションの設定も、CGIは755、ログは666と、間違っていないことを確認してあります。 perlへのパスも、Macでなら動くことでもおわかりのように、間違っていません。 尚、このCGIはDOS-Vの改行コードで記述してあります。 どなたかこの異常の原因がおわかりの方はいらっしゃいませんでしょうか? どうか解決のためのアドバイスをお願いいたします。

    • ベストアンサー
    • CGI
  • fedora core3でCGIがソースコードで表示されてしまいます。

    document root("var/www/html")でCGIを使うために、httpd.confの設定で#Addhandler cgi-script →Addhandler cgi-script , と書き直し、<Directory"var/www/html">のoption項目にExecCGIと追加しました。 アクセスするときはlocalhost/***.cgiとしています。 cgi fileのperlのパスが#!/usr/bin/perlとなっているのでその場所にちゃんとperlがあるかも確認しました。 .cgiファイルはWindowsXPからASCIIで転送したものです。.httpd.confの設定以外はデフォルトの状態です。 何日間か試行錯誤したのですが、うまくいきません。どうかご助言お願いします。