最新閲覧日:

RedHatLinux7でイントラネットでWebサーバーを構築しました(apache)で、CGIを動かしたいのですが、動きません。あるサイトで「httpd.conf の AddHandler cgi-script .cgiを生かせばいい」となっていたのでそうしましたが、まだ動きません。あと何を設定すれば良いのですか?(CGIのパーミッションはちゃんとしています。)httpd.confにCGIの記述が他にもありましたが意味がわからずそのままにしています。

A 回答 (11件中1~10件)

むずかしいですねぇ...


となると、該当のCGIスクリプトの中でinclude又はsystem呼出しを行っている追加スクリプトや実行プログラムが見付からないのかもしれません。

jcode.plやnkf等の追加ツールを使用する様なCGIスクリプトになっておりませんか?
もしそれらがサーバ上に存在していたとしても、apacheの実行ユーザ(デフォルトでは"apache"の筈)のパスの通っているディレクトにいなければ動作しません。

CGIスクリプトと同一のディレクトリにそれらも一緒に置くか、またはCGIスクリプトの中で夫々を呼び出している記述を個々の絶対パスに書き換える必要があります。
    • good
    • 0
この回答へのお礼

お騒がせして申し訳ありませんでした。
perlの存在場所を正しく記述していたはずでしたがもう一度見ると間違えておりましたので修正して動かしたら正常に動作しました。
エラーの意味をよくよく考えればそういう意味だったみたいです。(笑)
apacheのコンフィグが間違っているとばかり思っていたのですが・・・単純なエラーでした。(笑)

お礼日時:2001/04/17 10:27

では、最後に一つ以下の点を確認してください。



sambaで転送したperlスクリプトの改行コードは LF になっていますか?
私の経験では、CR+LF(Win系) や CR(Mac系)のままだと動作致しません。
(エラーとしては、コード501の Internal Server Error が出る筈なのでちょっと違うかな... )

此れでも違う様でしたら、現物を直接チェックしていかないと私も此れ以上は思い付きません。m(_'_;m

この回答への補足

NINJYA104さんの補足に書いているエラーはapacheのエラーLOGの内容です。直接URLにCGIのあり場所を記述したら「エラーです管理者に相談するかエラーLOGに書いてある」と出るので見てみたら、そんな内容でした。sambaで転送して駄目ならFTPで転送しても同じ結果です。スクリプトの実行でファイルがないと怒っているのが何なのかがわかりません。
以前インターネットでCGIを挙げたとき他のユーザーの所に無理やり入れたらCGIが動かなかったことがあります。(それとは今回は関係ないのかな?)

補足日時:2001/04/16 17:10
    • good
    • 0

/home/jin/WWW/cgi-bin/cnt.cgi に実体があるのなら、


http://www.foobar.org/~jin/cgi-bin/cnt.cgi
参照するもののような気がするのですが???
    • good
    • 0

>エラーLOGをみると「そんなファイルまたはディレクトリーがない」


というログとsambaで転送したという事ですが、もしかしてCGIファイル名の拡張子が ~.CGI ← 大文字 になっていませんか?
unixは大文字と小文字を区別しますので、大文字のファイル名でも実行可能にさせたい場合は、

> AddHandler cgi-script .cgi .CGI

と、書き足してあげるか、または必ず小文字に直せば良いでしょう。

この回答への補足

エラーの内容は下記です。
[Sun Apr 15 09:40:44 2001] [error] (2)No such file or directory: exec of /home/jin/WWW/cgi-bin/cnt.cgi failed
[Sun Apr 15 09:40:44 2001] [error] [client 192.168.0.9] Premature end of script headers: /home/jin/WWW/cgi-bin/cnt.cgi
それで、CGIを削除したらスクリプトが無いって言うエラーに変わったのでCGIは動いているのではないかと思いますが、ファイルが無いとういのは確かにファイルを使ってますがCGIの中でちゃんとパスを切っているので見つからないというエラーは理解しがたいのですが・・・パーミッション等の関係で(インターネットサーバー管理者に尋ねるとユーザー・グループ・パーミッションの関係でおかしくなる・・という回答だったので・・)そのようなエラーが出るのでしょうか?
あと別のCGIを動かしても(そのCGIはCGI-BINディレクトリの中のデータファイルを見ているだけですが・・)同じエラーが出ます。
理解範囲を超えております(笑)

補足日時:2001/04/15 09:37
    • good
    • 0

間違っていたらごめんなさい。


ScriptAlias行があると、cgiはこのディレクトリに
強制されていたような気がしてます。

以下のようにデフォルトの
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
をコメントアウトして、
<Directory "/home/*/WWW">

Options ExecCGI

</Directory>
としては如何でしょうか。

この場合だと、http://hogehoge.com/~hoge/abc.cgi
という形で呼び出すことになるのかなあ?という感じですが、

もしdocumentrootの/var/www/cgi-binを使っているなら、
ScriptAlias は生かしておいて、
usrごとにディレクトリを作って、
SYMB_LINKを~USRからはるのも手だと思います。

この場合だと
~hoge/WWW →/var/www/cgi-bin/hoge

http://hogehoge.com/cgi-bin/hoge/abc.cgi
で呼び出しかなあなんて思ってます。
参考になればとおもいます。
ではでは

参考URL:http://www.apache.org
    • good
    • 0

/home/wwww/cgi-bin/の下においていますか?

この回答への補足

selenityさんのエラーの質問ですが、エラーLOGをみると「そんなファイルまたはディレクトリーがない」というエラーです。しかしながら現実には存在しています。転送をsambaで行ったのですが・・その辺に問題があるのでしょうか?(このCGIはインターネット上では正常に動作しております。)
ken2さんの質問は置いている場所は
/home/ユーザー/WWW/cgi-bin
の下です。
ファイル名をちゃんと認識すれば上手く動作するのではないかと思います・・

補足日時:2001/04/14 14:27
    • good
    • 0

基本のお話になりますが、httpd.conf を書き換えた場合、その内容を反映させるには apache(httpd)を再起動させないといけませんが、行っておりますか?



単純にスーパーユーザー(su)にてコンソール又はターミナルのコマンドラインから

/etc/init.d/httpd restart

とタイプすればOKです。

話しの流れから 各ユーザ用ディレクトリ(/home/*/WWW)の下層の任意ディレクトリでCGIを実行させたいのだと推測されますが、その辺りの認識誤りが有ればご指摘ください。

selenityさんと私の先述の内容差は CGIをCGI設置推奨の共通デフォルトディレクトリで行うか否かの違いです。

この回答への補足

再起動は常にしております。(あしからず・・)
>各ユーザ用ディレクトリ(/home/*/WWW)の下層の任意ディレクトリでCGIを実行させたい
その通りです。

では・・どうすればよろしいのでしょうか?

よろしくお願いいたします。

補足日時:2001/04/13 21:21
    • good
    • 0

cgi-binディレクトリのパーミッションが751になっていなかったら、そのように修正してみてください。

    • good
    • 0

CGIはPerlでしょうか?


httpd.confが設定されているとします。
CGIの最初のパスはどうなっていますか?
perlのパスが違ってたりします。

CGIの一番上のところを
#!/usr/bin/perl
にしてみてはどうでしょう??

この回答への補足

CGIはPerlです。ちゃんとperlのあるパスになってます。

補足日時:2001/04/13 17:17
    • good
    • 0

好みのディレクトリにてCGIを実行させたいのであれば、それぞれのディレクトリに対してもCGIの実行許可を与える必要があります。

(基本は httpd.conf に記述します)

例えば、DocumentRoot下層以外の個人ディレクトリWWWルート(例:/home/ユーザ名/public_html)下層でも実行可能にしたいのであれば、

UserDir public_html

の記述と、

<Directory "/home/*/public_html">

Options ExecCGI

</Directory>

の記述がされているかどうかを確認してみてください。

この回答への補足

UserDirがWWWなので<Directory "/home/*/WWW">にしました。他のオプションもついていましたが、 ExecCGIを追加しましたが駄目でした。

補足日時:2001/04/13 17:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報