はじめまして nobo33と申します。
WindowsXP(home)とAnHttpdを使い自宅サーバを運用しておりましたが、Linuxに興味を持ち始めたのを機会にAnHttpdを削除し、アパッチ2.0を導入しましたところ、BBS、日記のCGIは動くのですが、カウンターのCGIが動きません?
(AnHttpdではppp/~ooo/aaa/aa.cgiと言う形でCGIを設置しました。アパッチ2.0でもそのまま移行してます。URLが現状のものです。)
自分の手には負えない状況になり何かヒントはないかとネット検索して貴HPにたどり着きました。
ご教示いただけると有難いです。
こんにちは。
> WindowsXP(home)とAnHttpdを使い自宅サーバを運用しておりましたが、Linuxに興味を持ち始めたのを機会にAnHttpdを削除し、アパッチ2.0を導入しましたところ、BBS、日記のCGIは動くのですが、カウンターのCGIが動きません?
> (AnHttpdではppp/~ooo/aaa/aa.cgiと言う形でCGIを設置しました。アパッチ2.0でもそのまま移行してます。URLが現状のものです。)
皆さんにいろいろ言えるほどの者ではないのですが、トラブルの原因追求はログを見ることからはじめましょう。
Apacheのerror_logに、今回の問題は答えが絶対に見えているはずです。
実際のドキュメントのディレクトリ構成が見えないのですが、
ドキュメントルートが、c:\apache2\htdocs、cggi-binディレクトリがc:\apache2\cgi-binとすると
日記やBBSはドキュメントルート配下ですが、カウンタだけは、cgi-binディレクトリに置いてませんか。
もしそうならHTMLの書き方を変えるか、カウンタ用cgiを置く位置を変えてHTMLも変えてください。
Apacheでは、cgi-binディレクトリはcgi設置用の特別な扱いになっており、httpd.confの中で
ScriptAlias /cgi-bin/ "C:/Apache2/cgi-bin/"
のように定義されているところがあるはずです。この設定ですと、URIに/cgi-bin/がでてくると無条件にC:/Apache2/cgi-bin/であるとして、アクセスにいきます。
但し、これは~oooのようなアクセスではない場合です。 ~oooでのアクセスの場合は、こちらが先に処理されてcgi-binの処理はされず、そのままアクセスに行きます。
つまり、ppp/~ooo/cgi-bin/aaa/aa.cgiとすると、
c:\apache2\htdocs\ooo\public_html\cgi-bin\aaa\aa.cgi
とユーザoooのドキュメントルート配下にcgi-binがあるものとしてapacheはアクセスします。
もし、C:\Apache2\cgi-bin以下にアクセスさせたいなら、ppp/cgi-bin/aa.cgiと~ooo無しにしてください。
これがいやなら、他のcgiと同様にユーザドキュメント配下にaaaというディレクトリ以下を置いて、HTMLでcgi-binの指定を止めることです。
ご質問と直接関係ありませんが、家庭内からプライベートアドレスでアクセスするとHPがうまく見えなくなっていませんか?。
自サイト内のリンクは、ルータにもよりますが、相対表現で書かないと一般的にアクセスに失敗します。
・変更前:<A href="http://wildflower.homeip.net/~benz/aaa/aa.cgi/">
・変更後:<A href="aaa/aacgi/">
ありがとうございます。
アパッチのconfの設定後、BBSと日記は問題なく動きました。
カウンターCGIもBBSと日記と同じ設置方法です。
カウンターCGIだけが動いてないので、confはそのままにして、カウンターCGIをHTMLの/cgi-bin/の中に入れたり、Apache2の/cgi-bin/の中に入れても動きませんでした。(404エラー)
新規にCGIをBBSと日記と同じように設置してみましたが、404エラーとなってしまいます。
confの設定が悪ければBBSも日記も動かないと思われるので自分には???です。
HPは下記のようになってます。
d:\home\benz\pubilc_html\count\count.cgi
d:\home\benz\pubilc_html\sh_bbs2\sh_bbs2.cgi....
> 皆さんにいろいろ言えるほどの者ではないのですが、トラブルの原因追求はログを見ることからはじめましょう。
> Apacheのerror_logに、今回の問題は答えが絶対に見えているはずです。
> 実際のドキュメントのディレクトリ構成が見えないのですが、
> ドキュメントルートが、c:\apache2\htdocs、cggi-binディレクトリがc:\apache2\cgi-binとすると
> 日記やBBSはドキュメントルート配下ですが、カウンタだけは、cgi-binディレクトリに置いてませんか。
> もしそうならHTMLの書き方を変えるか、カウンタ用cgiを置く位置を変えてHTMLも変えてください。
> Apacheでは、cgi-binディレクトリはcgi設置用の特別な扱いになっており、httpd.confの中で
>
> ScriptAlias /cgi-bin/ "C:/Apache2/cgi-bin/"
>
> のように定義されているところがあるはずです。この設定ですと、URIに/cgi-bin/がでてくると無条件にC:/Apache2/cgi-bin/であるとして、アクセスにいきます。
> 但し、これは~oooのようなアクセスではない場合です。 ~oooでのアクセスの場合は、こちらが先に処理されてcgi-binの処理はされず、そのままアクセスに行きます。
> つまり、ppp/~ooo/cgi-bin/aaa/aa.cgiとすると、
>
> c:\apache2\htdocs\ooo\public_html\cgi-bin\aaa\aa.cgi
>
> とユーザoooのドキュメントルート配下にcgi-binがあるものとしてapacheはアクセスします。
> もし、C:\Apache2\cgi-bin以下にアクセスさせたいなら、ppp/cgi-bin/aa.cgiと~ooo無しにしてください。
> これがいやなら、他のcgiと同様にユーザドキュメント配下にaaaというディレクトリ以下を置いて、HTMLでcgi-binの指定を止めることです。
>
> ご質問と直接関係ありませんが、家庭内からプライベートアドレスでアクセスするとHPがうまく見えなくなっていませんか?。
> 自サイト内のリンクは、ルータにもよりますが、相対表現で書かないと一般的にアクセスに失敗します。
>
> ・変更前:<A href="http://wildflower.homeip.net/~benz/aaa/aa.cgi/">
>
> ・変更後:<A href="aaa/aacgi/">
> カウンターCGIだけが動いてないので、confはそのままにして、カウンターCGIをHTMLの/cgi-bin/の中に入れたり、Apache2の/cgi-bin/の中に入れても動きませんでした。(404エラー)
> 新規にCGIをBBSと日記と同じように設置してみましたが、404エラーとなってしまいます。
404の意味はわかりますよね。指定されたところにドキュメントがないので、apacheのerrorログにアクセスに行っているところが出ているはずですので、そこを見れば、ご自分のHTMLが悪いということが分かるはずです。
今のHTMLでは、
d:\home\benz\pubilc_html\cgi-bin\count\count.cgi
にアクセスに行きます。下記のとおりです。
> > 但し、これは~oooのようなアクセスではない場合です。 ~oooでのアクセスの場合は、こちらが先に処理されてcgi-binの処理はされず、そのままアクセスに行きます。
> > つまり、ppp/~ooo/cgi-bin/aaa/aa.cgiとすると、
> >
> > c:\apache2\htdocs\ooo\public_html\cgi-bin\aaa\aa.cgi
> >
> > とユーザoooのドキュメントルート配下にcgi-binがあるものとしてapacheはアクセスします。
> > もし、C:\Apache2\cgi-bin以下にアクセスさせたいなら、ppp/cgi-bin/aa.cgiと~ooo無しにしてください。
> > これがいやなら、他のcgiと同様にユーザドキュメント配下にaaaというディレクトリ以下を置いて、HTMLでcgi-binの指定を止めることです。
上記の説明で分からなければ、cgi等は今のまま、トップページを下記のように書き換えてください。
変更前:<img src="http://wildflower.homeip.net/~benz/cgi-bin/counter/counter.cgi">
変更後:<img src="http://wildflower.homeip.net/~benz/counter/counter.cgi">
すみません。
自分ではおやじ様の説明は理解できていると思います。
今、一番最初の状態に<img src="http://wildflower.homeip.net/~benz/counter/counter.cgi">しました。
カンターが見えません。ひょっとしたらCGIは動いていて表示だけされてないかも?
でも他のCGIでは画像も見れるし。
新しくCGIを設置し実行させると404エラーになるし。。。
で???な自分です。
貴重な時間を割いていただき恐縮です。
> > カウンターCGIだけが動いてないので、confはそのままにして、カウンターCGIをHTMLの/cgi-bin/の中に入れたり、Apache2の/cgi-bin/の中に入れても動きませんでした。(404エラー)
> > 新規にCGIをBBSと日記と同じように設置してみましたが、404エラーとなってしまいます。
>
> 404の意味はわかりますよね。指定されたところにドキュメントがないので、apacheのerrorログにアクセスに行っているところが出ているはずですので、そこを見れば、ご自分のHTMLが悪いということが分かるはずです。
> 今のHTMLでは、
>
> d:\home\benz\pubilc_html\cgi-bin\count\count.cgi
>
> にアクセスに行きます。下記のとおりです。
>
> > > 但し、これは~oooのようなアクセスではない場合です。 ~oooでのアクセスの場合は、こちらが先に処理されてcgi-binの処理はされず、そのままアクセスに行きます。
> > > つまり、ppp/~ooo/cgi-bin/aaa/aa.cgiとすると、
> > >
> > > c:\apache2\htdocs\ooo\public_html\cgi-bin\aaa\aa.cgi
> > >
> > > とユーザoooのドキュメントルート配下にcgi-binがあるものとしてapacheはアクセスします。
> > > もし、C:\Apache2\cgi-bin以下にアクセスさせたいなら、ppp/cgi-bin/aa.cgiと~ooo無しにしてください。
> > > これがいやなら、他のcgiと同様にユーザドキュメント配下にaaaというディレクトリ以下を置いて、HTMLでcgi-binの指定を止めることです。
>
> 上記の説明で分からなければ、cgi等は今のまま、トップページを下記のように書き換えてください。
>
> 変更前:<img src="http://wildflower.homeip.net/~benz/cgi-bin/counter/counter.cgi">
> 変更後:<img src="http://wildflower.homeip.net/~benz/counter/counter.cgi">
> 今、一番最初の状態に<img src="http://wildflower.homeip.net/~benz/counter/counter.cgi">しました。
> カンターが見えません。ひょっとしたらCGIは動いていて表示だけされてないかも?
> でも他のCGIでは画像も見れるし。
> 新しくCGIを設置し実行させると404エラーになるし。。。
404のエラーメッセージ全体を載せてみてくれませんか?
このHTMLは、動いていた実績はあるのですよね? このcgiのコールの仕方がおかしいような気もします。
なんどもすみません。
約6ヶ月間ぐらいWindowsXPとANHTTPDの組み合わせで現在のHTMLを稼動させておりました。
その時には、カウンターは出てましたし、新しくCGIも設置でき稼動できました。
CGIのコール方法は、お借りしたCGIのHPに書いてあった設置方法で行いました。
これから披露宴に行きますが、お酒を飲まなずに帰宅して夜にでも冴えた?頭で?見直してみます。
> > 今、一番最初の状態に<img src="http://wildflower.homeip.net/~benz/counter/counter.cgi">しました。
> > カンターが見えません。ひょっとしたらCGIは動いていて表示だけされてないかも?
> > でも他のCGIでは画像も見れるし。
> > 新しくCGIを設置し実行させると404エラーになるし。。。
>
> 404のエラーメッセージ全体を載せてみてくれませんか?
> このHTMLは、動いていた実績はあるのですよね? このcgiのコールの仕方がおかしいような気もします。
こんばんは
カウンターCGIを削除し、新たにCGIを変えましたところエラーとなり実行できませんでした。
BBS、日記、画像のCGIは動いているのに。。。
アパッチを削除し、もう一度アパッチを入れなおしてみます。
また、その結果をご報告あがります。
こんばんは
お世話になっております。
CGIの中の#!/usr/bin/perlを#!/usr/local/bin/perlに変えたらOKになりました。
ご迷惑おかけしました。
こんばんは
> お世話になっております。
> CGIの中の#!/usr/bin/perlを#!/usr/local/bin/perlに変えたらOKになりました。
良かったですね。とりあえず、ApacheのCGI関係のTipsをまとめようとしていたところでした。
perlへのパスミスは、おやじのようにWindowsからLinuxに乗り換えるとLinuxがデフォルトで
インストールされるので陥りやすいミス(Windowsは自分でいれるのでミスしにくい)ですね。
このミスの場合、500のエラーになるはずであり、404とおっしゃっていたので???気が付きませんでした。
今まで動いていたというので、perlをインストールしなおしたのかなと思ったのですが、
どなたかが、AN HTTPDはここが違ってても動くというようなことを言っていたような?
AnHTTPdはPerl自身に.cgiをマッピングしているので、1行目のPerlパスは無視されますよ。
私自身はずっとApacheを使ってたので詳しくは知りませんが(^^;
こんにちわ。
> お世話になっております。
> CGIの中の#!/usr/bin/perlを#!/usr/local/bin/perlに変えたらOKになりました。
>
> ご迷惑おかけしました。
なるほど、よくハマるミスですね。
CGIファイル全部を上記に修正するのが大変な時、Linuxの場合では lnでシンボリック
リンクを貼るだけで済むので手間が省けます。