2

サーバーで単純な perl スクリプトを実行しようとすると、内部 500 サーバーが表示され、エラー ログを確認すると次のように表示されます。

Premature end of script headers: test.pl

perl スクリプトは次のとおりです。

#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "testing...\n";

私のcgi-binフォルダーには 0755 のアクセス許可があります。スクリプト自体も 0755 です。スクリプトは apache によって所有されており、グループ apache にあります。スクリプトは、コマンド ライン経由で正常に動作します。

何が問題で、どうすれば修正できますか?!

助けてくれてありがとう!

アップデート

suExec で興味深い発見:

2010-09-14 17:38:28]: uid: (10001/som) gid: (2522/2522) cmd: test.pl
[2010-09-14 17:38:28]: target uid/gid (10001/2522 or 2521) mismatch with directory (48/0) or program (48/0)

しかし、私の cgi-folder は test.pl スクリプトと同じです - 別のディレクトリを参照していますか?

4

3 に答える 3

9

たくさんの良いアドバイス:PerlCGIスクリプトのトラブルシューティングを行うにはどうすればよいですか。

suexecエラーメッセージが表示された更新:サーバーには、ディレクトリと同じユーザーがCGIプログラムを所有する必要があるようです。ファイルの所有権を変更してみてください。

于 2010-09-14T15:35:20.843 に答える
3

PerlMonksでそのエラーメッセージを表示するPerlスクリプトのトラブルシューティングに関する優れた提案がたくさんあります。ここから始めてください。スクリプトに特定のエラーは表示されません。ファイルのアクセス許可については説明したようですので、Apache構成の提案から始めます。

于 2010-09-14T16:36:29.887 に答える
0

CGIモジュールを使用します。

CGI qw /:standard/を使用します。
$ q = CGI-> new;
$ q-> header('text / html');を出力します。
印刷"テスト中...\n";     
于 2010-09-14T15:31:20.700 に答える