CGI-Programm mit Lazarus

Rund um die LCL und andere Komponenten
mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: CGI-Programm mit Lazarus

Beitrag von mschnell »

MitjaStachowiak hat geschrieben:Naja, ich erwarte, dass, wenn ich das FCGI-Programm im Browser aufrufe, dieses wie gewohnt eine HTML-Seite ausgibt, nur dass der Prozess hinterher weiterläuft.
Wie gesagt: bei einem Lazarus-FCGI Projekt läuft der Prozess nicht wirklich weiter, weil es keine "Mainloop" also keine Events gibt, die aufgerufen werden, wenn irgendetwas passiert (z.B ein Timer zuschlägt). Das Programm (Main Thread) hängt in einem "Blocking Read" und fängt erst wieder an zu laufen, wenn neue Daten über die Pipe vom Webserver ankommen.

Was aber gehen sollte, ist, einen Thread zu starten, der im Hintergrund arbeitet.

Gruß,
-Michael

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 395
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: CGI-Programm mit Lazarus

Beitrag von MitjaStachowiak »

Gut zu wissen...

Ich habe inzwischen die Zugangsdaten für den Server und dort gleich mal ein perl-Script mit folgendem Inhalt hochgeladen:

Code: Alles auswählen

#!/usr/bin/perl -w
 
use strict;
 
use CGI::Carp qw(fatalsToBrowser);
 
print "Content-type: text/plain\n\n";
 
print "$^O\n";
Das gibt mir dann linux aus. Deswegen habe ich jetzt Lazarus und Apache auf meinem Ubuntu 11.04 installiert (Oh Graus!! aber jetzt geht's :mrgreen: ). Habe dann das FastCGI-Projekt kompiliert - jetzt erzeugt dieses einen Fehler, der auch in der error.log auftaucht:

Code: Alles auswählen

[Sat Jul 23 16:06:27 2011] [error] [client 127.0.0.1] Premature end of script headers: fcgi.cgi
Aber davon abgesehen: Das funktionierende CGI-Programm habe ich auch neu kompiliert und hochgeladen - jedoch erzeugt es auf dem Server einen Fehler :|
Ich kann dort kein error_log finden... Nach meinen Informationen soll aber CGI voll unterstützt werden (hoffentlich bezieht das voll hier auch Binaries ein). Ich werde jetzt erst mal versuchen, das zu lösen - weiß zufällig jemand, ob man mit perl-Scripts, wie dem obigen, noch andere Informationen über die Plattform abfragen kann (CPU, etc.)?

Antworten