Basis des Problems. Ich habe eine Universitätsaufgabe, die mich auffordert, eine Perl/CGI basierte Website für ein Telefonbuch zu schreiben. Dieser Teil ist in Ordnung und ich bin damit zufrieden, aber ich habe Probleme mit dem Einpacken der CGI-Dateien. Ich habe es schon einmal gemacht, aber es war nicht möglich, dieses Mal das gleiche zu wiederholen.Perl CGI mit C Wrapper
Grund Perl-Datei Benutzer-ID zu zeigen, ist:
#!/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");
}
Dies ist ein interner Serverfehler werfen 500. ich mein Bestes versucht haben, es zu debuggen Abstand einschließlich für die Header usw. Es läuft gut im Terminal, aber nicht in den Webbrowsern. Die Server httpd Fehlerprotokoll zeigt, dass der Fehler "vorzeitige Ende der Header". Ich kann jedoch nicht sehen, wie es zu einem vorzeitigen Ende kommt.
Jede Hilfe, die jemand anbieten kann, würde sehr geschätzt werden.
Diese Art von Sache ist normalerweise, weil das CGI-Programm stirbt, und das * "Vorzeitige Ende der Header" * bedeutet nur, dass es nichts druckt. Haben Sie überprüft, dass sowohl das C-Programm als auch das Perl-Skript vom System ausführbar sind? Ich bin mir nicht sicher, warum Sie ein C-Programm für Ihr CGI ausführen. Behandelt Ihr Server Perl-Code nicht direkt? Ich schlage vor, dass Sie Ihr C-Programm so modifizieren, dass Sie nur "Content-type: text/plain \ n \ nTest erfolgreich \ n"; 'ausdrucken, anstatt zu versuchen, Ihr Perl-Programm auszuführen. Das wird den C-Code beseitigen, wenn es erfolgreich ist – Borodin
Überprüfen Sie die Lösung hier http://stackoverflow.com/questions/17583341/error-500-premature-end-of-script-headers, z. waren die berechtigungsbits des cgi programms richtig? – fluter
Was lässt Sie denken, dass Sie diesen Wrapper brauchen? – duskwuff