- - PR -
RedHat9でperlが動かない
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-07-21 23:12
はじめましてぽちくんといいます
現在自宅サーバをRedHat9でセットアップしています 参考にしたのは以下のホームページです http://pc-unix.goco.ne.jp/index.html ほとんどの設定はこのホームページで出来たのですが なぜか、CGIだけが動きません コマンドラインから「./xxx.cgi」と実行すると正常に実行されますが ブラウザから実行すると「Premature end of script headers」のエラーとなります perlのデバッカでも、エラーがありません CGIが動かないとせっかくたてたサーバの意味が半減してしまいます どなたか教えてください よろしくお願いします | ||||||||
|
投稿日時: 2003-07-22 00:10
スクリプトヘッダの終わりが上手く認識できていないようです。
ぐぐって見たところ以下のような事例がありましたので参考にしてみてはいかがでしょう。 http://nt.hakodate-ct.ac.jp/~takahasi/labo/technicalnote/RH8/cgi.html #一番下です。 | ||||||||
|
投稿日時: 2003-07-22 00:19
Premature end of script headers
→httpdが期待している出力を受領しきらないうちに、CGIのスクリプトが異常終了しています。 よくあるミスのチェックリスト: 1.nobodyなりapacheなりのhttpdを実行しているユーザに適切な権限を与えていない。 →cgi本体に対しては権限を与えていても、参照しているファイルに対して権限が与えられていないことがよくあります。cgiで実行する場合には、通常とは異なる権限で動作していることに注意。 2.cgi中に余分なCRコードが紛れ込んでいる。 | ||||||||
|
投稿日時: 2003-07-22 18:22
試行錯誤してやっと動作しました
原因はと言うとRedHat9では記述が異なり、perl.confに設定するようです ただし、動くには動くのですが、DocumentRootが/(linux上のルート)になってるんですよね ソースを書き換えれば済むことなんでしょうけど、不便きわまりないです 相対参照のやり方ありませんか? | ||||||||
|
投稿日時: 2003-08-18 07:04
ぽちくんさんこんにちは。
同じ現象で困っております。 >原因はと言うとRedHat9では記述が異なり、perl.confに設定するようです perl.confがみつかりません。どこにあるのでしょうか? よろしければ、どのように記述したら動作するのかも 教えて頂けると幸いです。 | ||||||||
|
投稿日時: 2003-08-18 11:01
MyTimeさんこんにちは。
>2.cgi中に余分なCRコードが紛れ込んでいる。 #!/usr/bin/perl を #!/usr/bin/perl -- や #!/usr/bin/perl -w に変えると動くのですが、ファイルがたくさんあり、 他のサーバーとの整合もとりたいため、できれば 設定の変更だけで、ファイルはそのまま動かせない かと思っています。 (なぜこのように書くと動くのかも不明ですし...) [ メッセージ編集済み 編集者: なか-chan 編集日時 2003-08-18 11:01 ] | ||||||||
|
投稿日時: 2003-08-21 16:17
既に、レスがありますが、 print "Content-type: text/html\; charset=EUC-JP\n\n"; ↓ print "Content-type: text/html\; charset=EUC-JP\n"; のように改行が足りない場合や改行コードが CRLFになっていると「Premature end of script headers」エラーに なりますがこの点は間違いないですよね。 わざとエラーが出るようにして #!/usr/bin/perl -w でやってみましたが、動作しませんでした。動く理由がないし、動作しない方が正しいと思いますので perlを疑いたくなりますね。
mod_perl(apacheのモジュール)を使用する際に、LoadModule指示子の代わりに /etc/httpd/conf.d ディレクトリに置くようです。 何を記述するのかはわかりません。 記述ないようまで触れているのはみあたりませんでしたが、'perl.conf'で検索すれば何件かヒットします。 コマンドライン版perlには関係ありません。 | ||||||||
|
投稿日時: 2003-08-22 10:39
Marionetteさんこんにちは。
charsetはShift_JISです。Windowsでファイルを作っています。 charset〜の後に改行も2つ入れています。 プロバイダのサイトにアップロードしたときにはこのまま動作 していたのですが、自宅サーバーでは同じファイルで動きません。 そこで、何か設定を変更すれば動くのかな?と思いました。 #!/usr/bin/perl の後ろに--のような文字をつけると 改行コードに関係なく動くようで、実際に自宅サーバーでも 動作するようになりました。しかし、#!/usr/bin/perlだけだと 動きません。この書き方でもプロバイダのサイトでは動いているのです。 環境は Apache2.0をRedhat Linux 9のrpmで入れてup2dateしてあります。 |