誕生日にもらった意外なもの

はじめまして、自宅でサーバーを立てようとしているのですが、つまずいてしまったので力を貸してください。
環境はRedhat9.0(?)、apache2.054を使用しています。
cgi自体はネットから落としてきた物を手始めとして使用してます。
/var/www/にcgi-binを作成、そこにcgiファイル等を格納しています。
cgi、perlファイルは705
ログファイルは606
ロックファイルは707にパーミッションを設定しています。
httpd.confは
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
AddHandler cgi-script .cgi .perl
<Directory "/var/www/cgi-bin">
allowoverride none
options execcgi
order allow,deny
allow from all
</directry>
上記のように設定しています。
HPを表示させようとすると
「InternalError」と表示され、先に進みません。
このサイトを検索し、アスキーモードで転送も行って見たのですが。。。
どなたかCGI設定方法をご教授お願いいたします。

A 回答 (8件)

>which perlの結果


>/usr/bin/perl

から

>.cgiの1行目
>#!/var/www/cgi-bin



#! /usr/bin/perl

に変えたらどうですか?

>perlのパスが違うことが問題なのですか??

おそらく、そうです。
お書きに指定では、perlのスクリプトが動作しません。

この回答への補足

>>.cgiの1行目
>>#!/var/www/cgi-bin
>を
>#! /usr/bin/perl
>に変えたらどうですか?

変更しましたがまだ、同様のエラーで不可能でした。
エラーログを確認したところエラーが表示されていました。

[Mon May 23 20:33:54 2005] [notice] SIGHUP received. Attempting to restart
[Mon May 23 20:33:54 2005] [notice] Apache/2.0.53 (Unix) configured -- resuming normal operations
[Mon May 23 20:34:15 2005] [error] [client 192.168.11.3] (2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2
[Mon May 23 20:34:15 2005] [error] [client 192.168.11.3] Premature end of script headers: memo.cgi, referer: http://192.168.11.2
[Mon May 23 22:57:08 2005] [error] [client 192.168.11.3] (2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2
[Mon May 23 22:57:08 2005] [error] [client 192.168.11.3] Premature end of script headers: memo.cgi, referer: http://192.168.11.2
[Mon May 23 22:57:24 2005] [error] [client 192.168.11.3] (2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2
[Mon May 23 22:57:24 2005] [error] [client 192.168.11.3] Premature end of script headers: memo.cgi, referer: http://192.168.11.2
上記、apache再起動かけてから[.cgi]の一行目を
#! /usr/bin/perl
#! /var/www/cgi-bin
#! /usr/local/bin/perl5
と3パターン変更して作業した結果です。
3パターンともエラーの記述が同じため内容自体に不具合があるのではと考えているのですが、何かエラーからわかることはありますか。
お願いいたします。

補足日時:2005/05/24 09:07
    • good
    • 0

httpd.confも記述を追加されて、/var/www/html以下に


test.cgiをの拡張子をちゃんとcgiにしてますか?
/var/www/html以下であれば全てcgiが動く設定になってます。cgiのソースが表示されるのであれば、perlを確認してみてください。
rpm -qa |grep perl

この回答への補足

ありがとうございます
端末不具合のためサーバー機プラウザからindexファイルにアクセスしていたのですが、それが原因だったようです。
クライアント側からアクセスすると
「TEST」と問題なく表示されました。
ですので、使用しようとしていたcgiファイルに原因があったようです。
cgiファイルの中身等検証していきたいと思います。


>rpm -qa |grep perl を確認してください
確認しましたが、perlから始まるものが多数表示されました。この結果から何がわかるのですか??

補足日時:2005/06/02 11:28
    • good
    • 0

設定の記述を見る限り問題はなさそうですね。


一度、下記のように設定してみて、簡単なCGIを作り
動作するか確認してみては如何でしょうか?

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#
#<Directory "/var/www/cgi-bin">
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#</Directory>

<Directory "/var/www/html">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
--------------------------------------------
【テストCGI】
#!/usr/bin/perl

print "Content-type: text/html\; charset=shift_jis\n\n";
print "TEST PAGE\n";
exit;

この回答への補足

確認してみました。
プラウザ上から確認したところ
プラウザのフレーム内に
「#!/usr/bin/perl
print "Content-type: text/html\; charset=shift_jis\n\n";
print "TEST PAGE\n";
exit; 」
と表示されるようになりました。
ログ自体は出力されていません。

本来ならフレーム内に
「TEST PAGE」
と表示されるべきなんでしょうか?

補足日時:2005/06/01 13:30
    • good
    • 0

的外れでしたら申し訳ございません。


FTPはvsftpdでしょうか?vsftpdの場合、vsftpd.confファイルを編集し、アスキーモードをコメントアウトしないとアスキーモードでの転送は出来ません。
/etc/vsftpd/vsftpd.conf
#ascii_upload_enable=YES
#ascii_download_enable=YES

ascii_upload_enable=YES
ascii_download_enable=YES

もし、設定してあるので有ればすみません。

この回答への補足

回答ありがとうございました。
FTPはvsftpdを使用しています。

>/etc/vsftpd/vsftpd.conf
>#ascii_upload_enable=YES
>#ascii_download_enable=YES
>↓
>ascii_upload_enable=YES
>ascii_download_enable=YES

上記は設定済みです。
なにかほかに考えられることはありますでしょうか。

補足日時:2005/05/31 13:56
    • good
    • 0

No.3で



-------8<-------8<-------8<-------8<-------8<-------8<-------
>(2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2

「No such file or directory」とあるように「/var/www/cgi-bin/memo.cgi」のファイルが存在しないとApacheが言っていますが。
-------8<-------8<-------8<-------8<-------8<-------8<-------

と書きましたが、これについては撤回します。
ちょっと勘違いしてました。

cgiファイルの先頭行は、No.2で書いたように「#! /usr/bin/perl」になってますか?
「#! /usr/bin/perl」の後ろに何か制御文字(^Mとか)入っていませんか?
もし、入っているようならお書きになったエラーになります。

nkfコマンドがインストールされているなら、

# cd /var/www/cgi-bin
# mv memo.cgi memo.cgi.org
# nkf -Lu memo.cgi.org > memo.cgi
# chmod 705 memo.cgi

を実行してから、再度ブラウザから確認してみてください。
 
※RedHat9用nkfパッケージは、参照URLの所にあります。
 インストールCD内にもたぶん存在していると思います。

参考URL:http://ftp.redhat.com/pub/redhat/linux/9/en/os/i …

この回答への補足

ご返事遅くなりました。

No.2の[#! /usr/bin/perel]は設定済みです。

>nkfコマンドがインストールされているなら、
結果をプラウザから確認しましたところエラー表示自体は変わりなかったのですが、エラーログに変化が現れましたので下記に記します。

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Premature end of script headers: memo.cgi, referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Scalar found where operator expected at /var/www/cgi-bin/memo.cgi line 351, near ""!$B%Q%9%o!<%I$K8m$j$,$"$j", referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] !(Missing operator before $j?), referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Scalar found where operator expected at /var/www/cgi-bin/memo.cgi line 351, near "$j$^", referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] !(Missing operator before $^?), referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Scalar found where operator expected at /var/www/cgi-bin/memo.cgi line 351, near "$^$9", referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] !(Missing operator before $9?), referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Final $ should be \$ or $name at /var/www/cgi-bin/memo.cgi line 351, within string, referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] syntax error at /var/www/cgi-bin/memo.cgi line 351, near "print "!$B%Q%9%o!<%I$K8m$j$,$"", referer: http://192.168.11.2/

[Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Execution of /var/www/cgi-bin/memo.cgi aborted due to compilation errors., referer: http://192.168.11.2/

少し長いですが、上記のエラーを眺めるとどうもおおもとのcgiファイル自体が問題である気が起こってきました。ファイル自体はあるサイトから落としてきたので問題はないと踏んでいたのですが、なにかほかの簡単なcgiファイルを作成してTESTしてみようと思います。
もし上記エラーからなにか読み取ることができましたら御教授お願いいたします。

補足日時:2005/05/31 13:40
    • good
    • 0

>cgiファイルを


>/var/www/cgi-bin/に格納し、

念のため確認ですが、そのCGIファイルは、memo.cgiであっているのですよね?


><IFRAME src="../cgi-bin/memo.cgi"

これを

<IFRAME src="/cgi-bin/memo.cgi"

に変えたらどうなりますか?
 

この回答への補足

>念のため確認ですが、そのCGIファイルは、memo.cgiであっているのですよね?
確認しましたが問題ありませんでした。

><IFRAME src="/cgi-bin/memo.cgi"
に変えたらどうなりますか?
変更し、キャッシュ、クッキー削除後アクセスしましたが現象変わらずでした。
エラーログもANo4のものと同じでした。
cgiファイル自体がおかしいんですかね??

補足日時:2005/05/25 23:32
    • good
    • 0

>(2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer:

http://192.168.11.2

「No such file or directory」とあるように「/var/www/cgi-bin/memo.cgi」のファイルが存在しないとApacheが言っていますが。

その/var/www/cgi-binディレクトリ配下に置いたCGIファイルとURLで指定(たぶんhttp://192.168.11.2/cgi-bin/memo.cgiかな?)したCGIファイルと一致してますか?
 

この回答への補足

>その/var/www/cgi-binディレクトリ配下に置いたCGIファイルとURLで指定(たぶんhttp://192.168.11.2/cgi-bin/memo.cgiかな?) >したCGIファイルと一致してますか?

パスの設定が違うということですか?
cgiファイルを
/var/www/cgi-bin/に格納し、
/var/www/html/index.htmlよりcgiファイルを呼び出しています。そのときのソースは
<IFRAME src="../cgi-bin/memo.cgi"
にしています。
これが違うということですか?

補足日時:2005/05/24 14:58
    • good
    • 0

Apacheのエラーログにはどのようなエラーメッセージが出力されていますか?



※エラーログファイルは、httpd.confファイル内でErrorLogで指定されているものです。
 
ちなみに、.cgiファイルの1行目にあるperlコマンドのパスと「which perl」を実行して表示された結果と比べて同じになっていますか?
 

この回答への補足

ありがとうございます。
errorlogのは以下のようになっています。
[Thu May 19 21:10:10 2005] [notice] Apache/2.0.53 (Unix) configured -- resuming normal operations

which perlの結果
/usr/bin/perl
.cgiの1行目
#!/var/www/cgi-bin
になります。

perlのパスが違うことが問題なのですか??
お願いいたします。

補足日時:2005/05/19 21:17
    • good
    • 0

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