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

このQ&Aに関連する最新のQ&A

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

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



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

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

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

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

この回答への補足

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
    • good
    • 0

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


となると、該当の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

このQ&Aに関連する人気のQ&A

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

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

このQ&Aと関連する良く見られている質問

QLinuxのユーザー設定

Linux で、あるユーザーはメール以外(sshやftpなど)なにも利用できないという設定はできますか?、

Aベストアンサー

出来るか、出来ないか?
というだけなら、まぁ、出来るかと思いますが……。

「ssh ユーザー 禁止」とか、「ftp ユーザー 禁止」とかで検索してみると出てくると思いますが。
# ssh禁止ならtelnetも禁止…でしょうかね。

ディストリビューションに依存するかどうかは微妙かも知れませんが。
# 設定ファイルの場所や名前が違う…って程度かとは思いますけどね。


メールの利用だけってのでしたら「バーチャルメールボックス」って手もあるかも知れません。
http://sakuratan.biz/archives/5182 など。

Q【apache】httpd.confのAddHandlerについて

掲示板利用させていただきます。
apacheとphpの連携を行う際、httpd.confのAddHandlerを以下のように設定すると、httpでphpを呼び出した際、以下のエラーがでます。

●設定内容
AddHandler cgi-script .cgi .php

●エラー内容
Premature end of script headers

以下のように設定し直すと、正常に利用できるようになります。

●設定内容
AddHandler cgi-script .cgi

phpとcgiはイコールだと思っていたのですが、違うのでしょうか??

どなたかご教示ください。
よろしくお願いします。

Aベストアンサー

> AddHandler cgi-script .cgi .php

こういう設定ができないわけではないですが、あんまりメリットないかと。
PHPの設定法は書籍でもネット上の情報でも既にありすぎるくらい存在しているので、そちらを参考にされてみては。

> phpとcgiはイコールだと思っていたのですが、違うのでしょうか??

話のコンテキスト次第ですが、違う物としといたほうが話しやすいかと。

QFTPパスワードとユーザーパスワードを別にしたい

Linux(RedHat7.3)、Wu-ftpdを使っています。
ユーザーアカウントを追加する際IDとパスワードを設定しますが、通常はPOPアカウント、FTPなど共通したIDとパスワードになりますが、FTPのパスワードだけ違うものにしたいのですが可能でしょうか?

Aベストアンサー

wu-ftpd ではできないかもしれませんが、FTP サーバソフトによっては DB や LDAP に対応しているものがあります。私は ProFTPD を使用していますが、これと OpenLDAPを組み合わせて、Unix アカウントのパスワードとは全く関連の無い ID/Password を使用可能にしています。

参考URL:http://www.proftpd.org/

QRedHatLinux9でCGIがうまく動きません。

RedHatLinux9でApache2x系なのですが、CGIがうまく動きません。

Server error!
The server encountered an internal error and was unable to complete your request.
Error message:
Premature end of script headers: test.cgi
error 500

が出てしまいます。
行った作業としては、

# UserDir public_html の#をはずす
#AddHandler cgi-script .cgi の # を外す.
# <Directory /home/*/public_html>
<略>
# Options MultiViews ....
<略>
# </Directory>
の3カ所の # を外し,Options に ExecCGI を追加.
/usr/sbin/suexec を削除

という、こちらの掲示板に書いてあった作業を行いました。cgiがまず動くのかどうか確かめるために
/var/www/cgi-bin/ にtest.cgi(ほかのサーバで検証したcgiです)を送りましたが見れなかったです。
http://サーバのIP/cgi-bin/test.cgi でよいんですよね、上のcgiを確かめるパス。
これが間違ってたら。。。動かしたいのは一般ユーザの中でcgiが動くようにしたいのです。
パーミッションも問題なかったです。お願いいたします。

RedHatLinux9でApache2x系なのですが、CGIがうまく動きません。

Server error!
The server encountered an internal error and was unable to complete your request.
Error message:
Premature end of script headers: test.cgi
error 500

が出てしまいます。
行った作業としては、

# UserDir public_html の#をはずす
#AddHandler cgi-script .cgi の # を外す.
# <Directory /home/*/public_html>
<略>
# Options MultiViews ....
<略>
# </Directory>
の3カ所の # を外し,Op...続きを読む

Aベストアンサー

> もしかしてこの^M がまずいのでしょうか。

そのとおりです.

Microsoft Windowsか何かの,別のOSで作成したものを,何らかのftpクライアントソフトウェアでサーバーに転送しているのではないかと想像しますが,そのftpクライアントでASCIIモードで転送しても改行コードが適切に変換されないとすれば,それはvsftpdの設定の問題だということです.

で,

> vsftpの設定を変更・反映して、再度test.cgiをアップ
> ロードしたという理解でいいですか?

のように補足要求したわけですが,どうなんですか?
コメントしたことは全部確認していただかないと,手間がかかってしょうがありません.

なお,転送後に改行コードを変換するには,dos2unixという便利なコマンドがあります.
これで変換すると,パーミションが変化するので注意してください.

QLinux環境(wu-ftpd)でのftpログイン時メッセージ非表示方法

他計算機からFTPサーバへログインするときに表示されるメッセージ(バナー)を一切表示しないようにFTPサーバ側で設定する方法はありますでしょうか?
FTPサーバのOSはLinuxで、RedHat日本語版Linux7.3、FTPサーバは、wu-ftpd-2.6.2-5を使っています。

Aベストアンサー

/etc/ftpaccessのgreetingを変更してみてください。

参考URL:http://www2.ocn.ne.jp/~virii/sol8/install/wu-ftpd/idnex.html

Qapache のhttpd.conf

FreeBSDでapacheをつかっています。httpd.confがとてもながくとても編集しずらくかんじるのですが、#がついたところや関係ないところを削ってしまうとおかしくなるものなのでしょうか?

Aベストアンサー

ならないです。
「編集したら、動かなくなりました」という場合、それは関係のあるところをいじってしまったという事でしょう。

実行する前にはバックアップをとっておく事を忘れずに。

Qlinuxでのftpクライアントプログラムをつくるには

Windows(VC++ MFCを使用して)などで ftpクライアントのプログラムを作成することが出来るみたいですが
linux(TURBO LINUX 4.0)で同様なことはできないのでしょうか?

具体的には 以下のようなことがしたいためです。
(1) ftpサーバーにlinuxマシンにてクライアントでログイン
(2) サーバー上のftpホームディレクトリにあるファイルができるまで周期的に監視
(3) 該当するファイルができたらファイルをクライアント側に転送

(1)~(3)を一回のftp接続状態のまま自動的(プログラム)で行ないたいのです。

VC++ MFCでは,FTPを行なうクラスがいくつかあるみたいですが?

どなたかわかりましたら御回答ください。

Aベストアンサー

>Ruby Kylixではなく linux上のC言語ライブラリーかシェルで実現することは不可能でしょうか?

もちろん可能でしょう。libftp というライブラリを使えばできそうですが、
オンラインマニュアルが見つからず、具体的な使い方については力が及びません。m(__)m

ですが、GTK+ を利用した FTP クライアントソフトに「Aria」というものがあります。
またシェルで FTP をサポートしているものはないと思いますが、
"シェルみたいに使える"「lftp」というプログラムもあります。
これらのソースコードを見るのも勉強になるのではないでしょうか。
他にもテキストウェブブラウザの「w3m」は ftp アクセス関数を自前で作っています。

・w3m について
http://w3m.sourceforge.net/index.ja.html
http://www2u.biglobe.ne.jp/~hsaka/w3m/doc-jp/STORY.html

>ただたしかKylixは,オブジェクトpascalという言語で記載すると認識しています。

Kylix はバージョン3からC/C++言語をサポートするようになりました。
その点、下の書籍は情報が古かったですね。言い忘れていました、すみません。

ただ、お使いの TurboLinux がバージョン4.0ということで、
glibc のローダのバグの問題があるかもしれません。
Kylix のトップページから一番下の「Kylix 事前テストプログラム」をクリックして
テストプログラムをダウンロードしてチェックする必要があります。
glibc 2.2 にアップグレードすればバグの心配はありません。

P.S. Ruby もなかなかいいもんですよ。

参考URL:http://aria.rednoah.com/linux_j.shtml,http://snap.shot.cx/1017221027/,http://www.borland.co.jp/kylix/

>Ruby Kylixではなく linux上のC言語ライブラリーかシェルで実現することは不可能でしょうか?

もちろん可能でしょう。libftp というライブラリを使えばできそうですが、
オンラインマニュアルが見つからず、具体的な使い方については力が及びません。m(__)m

ですが、GTK+ を利用した FTP クライアントソフトに「Aria」というものがあります。
またシェルで FTP をサポートしているものはないと思いますが、
"シェルみたいに使える"「lftp」というプログラムもあります。
これらのソースコードを見るの...続きを読む

Qhttpd.confと.htaccessについて

http://www.○○.jp/
とファイル名を指定せずにURLを打ち込んだ時にindex.htmlではなくindex.phpを
見に行くようにしたいので、
apacheのhttpd.confを設定したんですが、うまく.htaccessファイルを見に行ってくれません。

一応、下記のとおりAllowOverrideをAllにして、.htaccessを使用可能な状態にしたハズなのですが
何か足りない部分があるんでしょうか?

*************************************

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

AccessFileName .htaccess

*************************************

ちなみに.htaccessが使用可能でなくても、最初にindex.phpを見に行ってくれればOKなので
下記のようにhttpd.confに設定をしたのですが、やっぱりダメで
無条件でindex.htmlを見に行ってしまいます。

DirectoryIndex index.php index.html index.htm index.shtml index.cgi


何分、初心者なのでつまらない質問かもしれませんが
色々試みたんですが、お手上げ状態です。。

どなたかわかる方いらっしゃったらよろしくお願いいたします。

http://www.○○.jp/
とファイル名を指定せずにURLを打ち込んだ時にindex.htmlではなくindex.phpを
見に行くようにしたいので、
apacheのhttpd.confを設定したんですが、うまく.htaccessファイルを見に行ってくれません。

一応、下記のとおりAllowOverrideをAllにして、.htaccessを使用可能な状態にしたハズなのですが
何か足りない部分があるんでしょうか?

*************************************

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

AccessFileName .htacc...続きを読む

Aベストアンサー

#1ですが。
あ、見えるですね。
.htaccessとhttpd.confがケンカしてるのかな?
どっちか一回止めてみられてはいかがっすか?

QLinuxサーバ間をFTP送信する

Windowsのマシンからある2つのLinuxマシン間のファイル転送をしたいのですが、
telnetを使用する以外の方法はないでしょうか。
具体的に言いますと、今はホームページ用のファイルをwindowsマシンから、FTPツールを使用して、
Linuxマシンにファイル転送しています。
今度、保存するサーバもLinuxマシンにする予定で、保存用のLinuxマシンからWebサーバのLinuxマシンにファイル転送する事になります。
FTPコマンドを使えばできるとは思うのですが、それ以外に方法はありませんか。
できればFTPツールを使って行えれば楽なのですが、2つのLinuxマシン間のファイル転送ができるツール(できれフリーの)はないのでしょうか。
ご存知の方がいらしゃいましたら、お願い致します。

Aベストアンサー

ファイル転送の1つにフリーで「samba」があり
ます。
エクスプローラーからLinuxマシンが参照でき、ファイ
ルの移動などもD&Dでできますので、扱いやすいとも
思います。

5年くらい前なら設定が面倒な記憶がありましたが、
最近はそのあたりが改善されたかもしれません。

WindowsとLinuxでは、改行コードの違いがあります
ので注意して下さい。

参考URL:http://www.samba.gr.jp/

Qhttpd.conf の設定について

httpdの設定について、ふたつほどわからない点があり困っております。
どなたかお知恵を拝借させてください。

1)
たとえば、

http://123.456.789.1/~posha/index.html

にアクセスしたいときに、多くのサーバーでは

http://123.456.789.1/~posha

だけでもいけてしまいます。しかし、うちのサーバーでは

http://123.456.789.1/~posha/

と、スラッシュまで入れないとindex.html を補完してくれません。
これを、前者のような指定だけでいけるようにするには、どのように
設定したらよいのでしょうか?


2)
ユーザーのホームディレクトリ上でcgiの起動を許可したとして、
~○○/cgi-bin/□□.cgi
のように、cgi-bin の下にあるものだけを許可する方法を教えてください。
(他のディレクトリにあっても、cgiとして実行されない)

以上、よろしくお願いします。

Aベストアンサー

1)はわからないので他の方に任せるとして、
2)は、
<Directory /home/*/public_html/cgi-bin>
Options +ExecCGI
</Directory>
をhttpd.confに書いておけば良いのでは
ないでしょうか?


人気Q&Aランキング

おすすめ情報