問題の根拠。私は大学の課題を持って、電話帳のPerl/CGIベースのウェブサイトを書くように要求しています。この部分は問題なく、私はそれに満足していますが、私はcgiファイルをラップする際に問題があります。私は一度もそれをやったことがありませんでしたが、今度は同じことを繰り返すことができませんでした。Perl CGI with C Wrapper
#!/usr/bin/perl -w
use English;
print "Content-type: text/html";
print "\n";
print "\n";
print "\n";
print "<html>\n";
print "<head><title>IDS.CGI</title></head>\n";
print "<body>\n";
print "<p>\nMy User ID is $UID\n</p>";
print "<p>\nMy effective User ID is $EUID\n</p>";
print "<p>\nMy Group ID is $GID\n</p>";
print "<p>\nMy effective Group ID is $EGID\n</p>";
print "\n</body>\n";
print "</html>\n";
Wrapper.C:
#include <stdio.h>
#include <unistd.h>
#define REAL_PATH "ids.pl"
int
main()
{
execl(REAL_PATH, REAL_PATH, 0);
printf("You should never see this message!\n");
}
これは私がスペースを含む、それをデバッグするために全力を試してみた内部サーバーエラー500を投げている
基本PerlはユーザーIDのを示すために、ファイルヘッダーなどのためにそれは端末でうまく動作しますが、Webブラウザーではうまく動作しません。サーバーのhttpdエラーログには、 "Premature end of headers"というエラーが表示されます。しかし、私は早すぎる終わりがどのようにあるか見ることができません。
ご迷惑をおかけして申し訳ございません。
この種のことは、通常、CGIプログラムが死んでいるためであり、「ヘッダーの早期終了」*は何も印刷していないことを意味します。 C実行可能ファイルとPerlスクリプトの両方がシステムによって実行可能であることを確認しましたか? CGI用にCプログラムを実行している理由が分かりません。あなたのサーバーはPerlコードを直接処理しませんか? text/plain \ n \ nあなたのPerlプログラムを実行しようとするのではなく、成功した\ n ";'をテストしてください。それが成功した場合は、Cコードを削除します – Borodin
ここで解決策をチェックしてくださいhttp://stackoverflow.com/questions/17583341/error-500-premature-end-of-script-headers、 CGIプログラムの許可ビットは正しくありましたか? – fluter
あなたはそのラッパーが必要だと思いますか? – duskwuff