Linux で自宅サーバ [ Home Server Techncial ]

>>トップページに戻る

BBS 過去ログ No.0005に戻る

タイトル: httpdでCGIが動きません
記事No: 1548
投稿日: 2004/02/12(Thu) 18:20
投稿者: 初心者
先日httpdを設定して「ecount」と言うカウンターを動かそうと試みたのですが以下のエラーが出て動きません。

Server error!
The server encountered an internal error and was unable to complete your request.
Error message:
Premature end of script headers: ecount.cgi
If you think this is a server error, please contact the webmaster
Error 500

CGIプログラムに誤りはないと思います。(perlのパスも間違っていません)

■httpd.confの設定は以下の通りです。

<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

エラーログ(/var/log/httpd/error_log)は以下のようになっています。

[Thu Feb 12 18:13:29 2004] [error] [client 128.1.0.110] Premature end of script
headers: ecount.cgi

再インストールした方がいいのでしょうか?教えてください。

タイトル: スクリプトのエラーですね
記事No: 1549
投稿日: 2004/02/12(Thu) 18:52
投稿者: pipi
こんばんわ
エラーコード500番はスクリプトのエラーです。

恐らく、perlで書いているのだと思いますが、以下の点を確認してみてください。

1.perlまでのpathが合っているか
#! /usr/bin/perl  ←こんなやつです。自分の環境に合わせてください。

それでもだめだった場合
#! /usr/bin/perl --   などとハイフンを2つつけるとうまくいく場合があります。

タイトル: 同じperlパスの別サーバでは動くのですが・・・
記事No: 1553
投稿日: 2004/02/13(Fri) 09:24
投稿者: 初心者
お返事ありがとうございます。
スクリプトのエラーなのですか?
perlのパスは「#!/usr/bin/perl」と書いてあります。
--を付けて試しましたが文字を「print」するだけの簡単なプログラムはなぜかこの方法で動きましたが、もう1つのカウンタープログラムは動きませんでした。
このカウンタープログラムとは「KENT WEB」さんの「e-Counter(シンプルカウンタ)」と言うやつです。
これは他にサーバ側に設定がいるのでしょうか・・・?
ちなみに同じパスの別のhttpdWebサーバへ設置した場合動きました。
なぜなんでしょう・・・。

タイトル: 「--」を付けるパスの指定はバージョンのせい?
記事No: 1554
投稿日: 2004/02/13(Fri) 15:30
投稿者: 初心者
perlのパス指定で「--」と付けないと動かないのはバージョンのせいでしょうか?

タイトル: 改行コードはどうでしょう?
記事No: 1555
投稿日: 2004/02/13(Fri) 17:13
投稿者: pipi
あと考えられるのは、
1.改行コードが「LF」になってない。
2.プログラムから読み込むファイルのパーミッションが違う。

この辺以外の原因だとわたしではわからないかもしれないです。

ちなみに、perlパスの--はおまじないとかよく言われてます。
なぜつけるとうまくいくときがあるのかわからないのですが、
うちで動かしているCGIのうち1つが、これをつけないと動かないです。。。

タイトル: うちのサーバでテストしてみました
記事No: 1556
投稿日: 2004/02/13(Fri) 17:45
投稿者: pipi
簡単なPerlだったので、ちょっとうちのサーバで試してみたところ、
おまじないはとくに気にせず、KENTさんところの設置方法通りでうまくいきました。

http://www.little-witch.org/~pipi/  ←何日かしたら消します。。

ちなみに、うちのサーバはCGIのディレクトリを外出しにしているのでこんな感じの設定です。

ScriptAlias /cgi-bin/ /xxxxx/yyyyy/cgi-bin/

<Directory /xxxxx/yyyyy/cgi-bin>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

▲ページの最上部に戻る

Copyright© Home Server Technical. All Right Reserved.
webmaster@miloweb.net