Ein einfaches "Hallo Welt"

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Ein einfaches "Hallo Welt"

Postby axam » 13. September 2006 23:26

Hallo ihr Leute.

Ich tueftel nun seit Tagen an einem einfachen "Hallo Welt"-Script in perl.
Ich habe xamp 1.5.3a installiert und acitve pearl draufgesetzt.
Das Script rufe ich ueber <a href='/cgi-bin/test.pl'>Script</a> ueber die Datei check.html auf. Diese liegt im htdocs-Ordner der xamp-Installation.

Das Script mit dem Namen test.pl
#!pearl.exe

use CGI;
use CGI::Carp qw(fatalsToBrowser);
$cgi = new CGI;

print $cgi->header('text/plain'), "Hallo Welt";


liegt im xampp\cgi-bin -Ordner.

Mein Problem nun ist, dass ich immer folgene Fehlermeldung bei aufrufen des Links erhalte

Serverfehler!
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
couldn't create child process: 720002: test.pl

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 500
localhost
09/14/06 00:08:08
Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP/5.1.4


Ich habe #!pearl.exe nun schon durch den Pfad zum active script ersetzt #!D:/activepearl/bin/perl.exe

Aber...alles hilft nix. Habe nun ach schon Probedurchlaeufe mit einer normalen Apache-Installation von apache.org getestet. Verschiedene Perlinterpreter installiert gehabt etc. und bin verzweifelt wieder beim xamp gelandet. Und weiss doch nicht weiter.

Das ganze laeuft auf meinem HeimPC. Kann mir da wohl weiterhelfen? Warum kommt dieser Fehler zustande und wie kann ich ihn beheben?


greetz
Janek


....oder verpeil ich hier grad was und merk es nicht..?
axam
 
Posts: 7
Joined: 13. September 2006 23:11

Postby deepsurfer » 14. September 2006 13:33

Code: Select all
#!pearl.exe  <<--- FALSCH !!


Code: Select all
#!perl.exe   <<-- müsste auch so in der Aktive-Perl Readme stehen

use CGI;
use CGI::Carp qw(fatalsToBrowser);
$cgi = new CGI;

print $cgi->header('text/plain'), "Hallo Welt";
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby axam » 14. September 2006 19:56

Hiho.

Dank erstmal an deepsurfer.

Daran scheint es gelegen zu haben.
Nun habe ich folgenes Prob. Wenn ich also nun den Link anklicke, dann bietet mir der Browser die Moeglichkeit "Öffnen, Speichern, Abbrechen".

Speichern ist wohl klar. Ich kann das perlscript speichern.
Abbrechen erklaert sich wohl selber.
Wenn ich nun auf Öffnen klicke geht lurz nen DOS-Fenster auf (oder wie nennt man das Neu-PC'sch?). Da scheint mir dann eine Ausgabe gemacht zu werden.

Das war allerdings nicht so mein Vorhaben. Eigentlich sollte "Hallo Welt" nun in einer leehren HTML-Seite im Browser dargestellt werden.
Habe das anderswo so auch schon funktionieren sehen.
Was, damn, mache ich also (wieder) falsch?

Mag nochmal wer helfen?

greetz
Janek
axam
 
Posts: 7
Joined: 13. September 2006 23:11

Postby deepsurfer » 14. September 2006 20:00

huuiii... das wäre falsch...

Hast Du nachdem Du das Aktive-Perl Installiert hast auch deinen PC neu geboot ????
Wenn nicht, so kann es klappen da der Perl-Parser bei diesem SHEBANG (die erste Zeile) nicht greifen kann.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby axam » 14. September 2006 20:47

Hallo deepsurfer.

Ja, Rechner ist neu gebootet. Grad eben nochmals.

Habe nun #!perl.exe
durch #!D:\perl\bin\perl.exe, #!D:/perl/bin/perl.exe ersetzt. Beides fuehrt aber zum selben Ergebnis. Dem bereits genannten Auswahldialog.


joar...

Janek
axam
 
Posts: 7
Joined: 13. September 2006 23:11

Postby deepsurfer » 15. September 2006 12:35

hhmmm hab grad dein Script mit XAMPP 1.5.3a mit Perl-Addon gegengechekt...

Bei mir läuft es einwandfrei, laufen denn die Beispielscripte die dir Acktiv-Perl mitgegegben hat ?
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby axam » 15. September 2006 21:44

Hallo deepsurfer.

Also. XAMPP 1.5.3.a neu installiert. ActicePerl build 629 neu installiert.

localhost aufgerufen und http://localhost/xampp wird aufgerufen und ich komme zum Willkommensschirm. localhost/check.html ruft also meine Seite auf. Ein Klick auf den Link bringt mich zum Oeffnen/Speichern/Abbrechen - Dialog.

Ich habe jetzt mal den Link auf die mitgelieferte Datei cgi.cgi gesetzt mit dem Ergebnis: OK

Ein verweis auf cgitest.cgi ergibt:

GCI with MiniPerl
CGI with MiniPerl is ready ...

Ein Verweis auf printenv.pl laesst dann allerdings wieder den bekannten Dialog aufblinken.

Allerdings, die shebang #!"D:\xAMPP\xampp\perl\bin\perl.exe" erstellt mir eine feine Webseite. Nur zeigt sie mir da was von einem Fehler 500. Genauer gesagt bekomme ich eine Seite, in welcher der Fehler im HTML/XML - Code wiedergegeben wird.

Auszug:
<<<
h1>Serverfehler!</h1>
<p>Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.</p>
- <p>
Fehlermeldung:
<br />
Premature end of script headers: test.pl
</p>
- <p>
Sofern Sie dies f
ü
r eine Fehlfunktion des Servers halten, informieren Sie bitte den
<a href="mailto:admin@localhost" shape="rect">Webmaster</a>
hier
ü
ber.
</p>
<h2>Error 500</h2>
- <address>
<a href="/" shape="rect">localhost</a>
<br />
- <span>
09/15/06 22:58:19
<br />
Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP/5.1.4
</span>
</address>
</body>
</html>

>>>

Ich versteh es einfach nicht.


greetz
Janek
axam
 
Posts: 7
Joined: 13. September 2006 23:11

Postby deepsurfer » 18. September 2006 08:53

Mal was grundsätzliches....

Wenn du XAMPP Installiert hast und der aufruf, dazu auch das Aktive-Perl und den aufruf http://localhost/cgi-bin/cgi.cgi durchführst, so wird nur das Perl vom XAMPP benutzt, weil das cgi-cgi seinen shebang XAMPP-Konform hat.

Da bei dir das printenv.pl einen Dialog öffnet ist seltsam, da dieser abermals XAMPP-Konform ist. ---sehr strange das verhalten---

Als gegentest kannst du ja mal die shebang der "cgi.cgi" auf dein Aktive-Perl umändern und abermals über http://localhost/cgi-bin/cgi.cgi aufrufen.


Oder schreibst dir eine einfache Textausgabe als Perlscript im cgi-bin Pfad von XAMPP z.B. texthello.cgi (http://localhost/cgi-bin/texthello.cgi) mit dem shebang des Aktive-Perl

Code: Select all
#!"perl.exe" -w
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";
print "Text ausgabe - Hello World - aus PERL heraus. \n";



Das -w im shebang ist nur eine Anforderung an den Parser, das er bei Fehler auch reagieren soll.
Das "use CGI::Carp qw(fatalsToBrowser);" ist ein Modul aufruf und wird dann von diesem "-w" mit zusätzlichen Daten gefüttert um eine Aussagekräftige Fehlermeldung zu erstellen, wenn etwas im Script bei der Übergabe an den Browser nicht funtkioniert.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby axam » 18. September 2006 13:26

Moin / Guten Tag deepsurfer.

Also folgende Zeilen in der cgi.cgi

Code: Select all
#!"D:\Perl\bin\perl.exe"
print "Content-Type: text/html\n\n";
print "OK";

aufgerufen ueber http://localhost/cgi-bin/cgi.cgi ergeben eine Webseit mit der Meldung: OK


Texthello

Code: Select all
#!"D:\Perl\bin\perl.exe" -w

use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print "Text ausgabe - Hello World - aus PERL heraus. \n";

aufgerufen als http://localhost/cgi-bin/texthello.cgi funktioniert auch ganz wunderbar. Funktioniert auch dann noch, wenn ich es ueber
Code: Select all
<a href='/cgi-bin/texthallo.cgi'>Script</a>

aus einer anderen Webseite per Link aufrufe. Wobei sich der Code von deinem Texthallo ja doch bissl zu meinem Original unterscheidet.
Liegt der Hund, also der Fehler, evtl. dort verborgen?

Ich habe jetzt mal
Code: Select all
#!"D:\Perl\bin\perl.exe" -w

use CGI;
use CGI::Carp qw(fatalsToBrowser);
$cgi = new CGI;
print "Content-Type: text/html\n\n";
print "OK";
print $cgi->header('text/plain'), "Hallo Welt";

in die Datei test.pl geschrieben und ueber den Link aufgerufen. Das Ergebnis: Eine feine Seite mit der Ausgabe

OKContent-Type: text/plain; charset=ISO-8859-1 Hallo Welt

[...Augenblicke spaeter...]

Ich hab da also mal bissl rumgepfuscht. Es liegt wohl in folgender Zeile begraben:
Code: Select all
print "Content-Type: text/html\n\n";

Mit dieser Zeile ergibt es eine feine Seite. Halt mit der Nebenwirkung dass irgendwie vom "Content" bis zum ISO-Code das Zeug mit ausgibt.
Naja, ohne diese Zeile jedenfalls meldet sich mein Öffnen-Dialog wieder.
Ich glaube also es liegt in dieser Zeile begraben. Weiter komm ich dann allerdings auch nicht. Zumal mich auch die unerwuenschte Ausgabe bissl stoert.

Allerdings, wenn ich die Shebang dann in
Code: Select all
#!"D:\xAMPP\xampp\perl\bin\perl.exe"

aender, dann...ja dann gibts wieder die HTML-Fehlermeldung. Also die, wo der Fehler als HTML-Code ausgegeben wird.

Ist doch auch net normal, oder?

So long


greetz
Janek
axam
 
Posts: 7
Joined: 13. September 2006 23:11


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 16 guests