-PR-
解決済み

LinuxのapacheでCGIが動かない

  • すぐに回答を!
  • 質問No.63301
  • 閲覧数344
  • ありがとう数4
  • 気になる数0
  • 回答数11
  • コメント数0

お礼率 20% (12/58)

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

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

  • 回答No.1
レベル12

ベストアンサー率 41% (324/772)

デフォルトの設定が分からないので確認点だけ、、、

・ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
・AddHandler cgi-script .cgi
・<Directory [ScriptAliasで指定したディレクトリ]>
Options ExecCGI

httpd.confの設定は以上です。

あとは、CGIファイルに「実行属性(x)」パーミッション
が付いているか確認してください。

P.S.
どのようなエラーメッセージが出ているのかが
分かれば、およその見当がつくのですが、、、
補足コメント
jincyan

お礼率 20% (12/58)

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"の "/usr/local/apache/cgi-bin/"は何を設定するのですか?(初心者なので申し訳ありません。)apacheのところがwwwになっていました。それでOptions ExecCGI
は追加しました。でも動きません。CGIファイルに「実行属性(x)」パーミッションはついています。
NINJA104さんの回答との違いは何でしょうか?どちらもやりましたが・・まだ駄目でした。
投稿日時 - 2001-04-13 17:24:28

その他の回答 (全10件)

  • 回答No.4
レベル12

ベストアンサー率 31% (182/583)

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


  • 回答No.3

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

CGIの一番上のところを
#!/usr/bin/perl
にしてみてはどうでしょう??
補足コメント
jincyan

お礼率 20% (12/58)

CGIはPerlです。ちゃんとperlのあるパスになってます。
投稿日時 - 2001-04-13 17:17:55
  • 回答No.2
レベル11

ベストアンサー率 43% (133/306)

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

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

UserDir public_html

の記述と、

<Directory "/home/*/public_html">

Options ExecCGI

</Directory>

の記述がされているかどうかを確認してみてください。
補足コメント
jincyan

お礼率 20% (12/58)

UserDirがWWWなので<Directory "/home/*/WWW">にしました。他のオプションもついていましたが、 ExecCGIを追加しましたが駄目でした。
投稿日時 - 2001-04-13 17:19:10
  • 回答No.6
レベル11

ベストアンサー率 36% (86/235)

/home/wwww/cgi-bin/の下においていますか?
補足コメント
jincyan

お礼率 20% (12/58)

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

ベストアンサー率 57% (4/7)

間違っていたらごめんなさい。
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
で呼び出しかなあなんて思ってます。
参考になればとおもいます。
ではでは
  • 回答No.10
レベル11

ベストアンサー率 43% (133/306)

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

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

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

お礼率 20% (12/58)

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

ベストアンサー率 40% (104/257)

/home/jin/WWW/cgi-bin/cnt.cgi に実体があるのなら、
http://www.foobar.org/~jin/cgi-bin/cnt.cgi
参照するもののような気がするのですが???
  • 回答No.8
レベル11

ベストアンサー率 43% (133/306)

>エラーLOGをみると「そんなファイルまたはディレクトリーがない」
というログとsambaで転送したという事ですが、もしかしてCGIファイル名の拡張子が ~.CGI ← 大文字 になっていませんか?
unixは大文字と小文字を区別しますので、大文字のファイル名でも実行可能にさせたい場合は、

> AddHandler cgi-script .cgi .CGI

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

お礼率 20% (12/58)

エラーの内容は下記です。
[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:25
  • 回答No.11
レベル11

ベストアンサー率 43% (133/306)

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

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

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

お礼率 20% (12/58)

お騒がせして申し訳ありませんでした。
perlの存在場所を正しく記述していたはずでしたがもう一度見ると間違えておりましたので修正して動かしたら正常に動作しました。
エラーの意味をよくよく考えればそういう意味だったみたいです。(笑)
apacheのコンフィグが間違っているとばかり思っていたのですが・・・単純なエラーでした。(笑)
投稿日時 - 2001-04-17 10:27:44
  • 回答No.5
レベル11

ベストアンサー率 43% (133/306)

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

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

/etc/init.d/httpd restart

とタイプすればOKです。

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

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

お礼率 20% (12/58)

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

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

よろしくお願いいたします。
投稿日時 - 2001-04-13 21:21:27
このQ&Aで解決しましたか?
関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ