Problem: CGI mag mein Server nicht....

s0yl3nt-bl4ck

Mitglied
Thread Starter
Dabei seit
09.04.2007
Beiträge
47
Reaktionspunkte
0
Nabend Mac-Gemeinde,

ich sitze nun seit gestern an meiner Kiste und habe und die Zigarettenschachteln stapeln sich auf dem Tisch. Ich bekomme meinen Server nicht dazu, mein CGI Script auszuführen.

Wahrscheinlich liegt es an irgendeiner simplen Einstellung, die mir aber partout nicht ins Auge springen will. Ich wende mich also an die Weisen und Mächtigen.... :D


Folgender Sachverhalt:

Gestern habe ich Probeweise meinen integrierten Apache gestartet. Läuft auch alles wunderbar, über http://localhost bekomme ich die richtige Apache-Startseite zu sehen, so wie es sein soll. Gut, über http://localhost/~BENUTZERNAME erscheint auch meine Webseite, also die Mac Interne aus dem Ordner "Web-Sites" (allerdings ist dabei merkwürdig: Das MAC Logo ganz oben wird nicht dargestellt, stattdessen steht dort nur ein Schriftzug: "Mac Logo". Die Male davor, als ich den Server gestartet hatte, habe ich auch das logo gesehen!).


Ok, da der Server läuft habe ich versucht, ein CGI Script zu starten. Also kurz den Editor auf und getippt:

#!/bin/perl
echo "Hallo, das ist ein Test"


Das ganze gespeichert als test1.cgi. In den Ordner Websites geschoben und versucht, über den Feuerfuchs aufzurufen: http://localhost/~BENUTZERNAME/test1.cgi

Ok, funktionierte nicht. Fehlermeldung: Der Pfad ist dem Server unbekannt.

Dann habe ich mich im Internet schlau gemacht und viel gesucht, 2 Seiten habe ich gefunden, die eine halbwegs gute Anleitung zum besten geben:

http://www.cgi101.com/learn/connect/mac.html (auf Englisch)

und

http://www.corneliamenzel.com/2007/06/30/einrichten-eines-lokalen-webserver-unter-mac-os-x/ (auf Deutsch)


Ok. Also die Anweisungen dort befolgt, in meinem Editor die httpd.conf aufgerufen und folgendes verändert (natürlich mit vorheriger Sicherung der httpd.conf):

In diesem Block die Kommentarzeichen entfernt:

#<Directory /home/*/Sites>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS PROPFIND>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>



Dann in der Zeile mit "Options" zu Beginn diese Ergänzung gemacht:

Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI

Weiter:

Direkt dahinter diese Zeile eingefügt:

DirectoryIndex index.html index.cgi


Danach in die Add-Handler Zeile folgendes geschrieben:

AddHandler cgi-script .cgi .pl (Ja, ich möchte auch .pl Endungen als CGI ausführbar haben, da ich mit Perl proggen will/muss).

Zu guter Letzt folgende Anweisung der Seite befolgt:

"Also uncomment the AddHandler line for server-parsed, and change the extension from .shtml to .html:

AddHandler server-parsed .html

This causes all .html files to be searched for server-side include tags. "


Tja, das ganze gespeichert, den Server neu gestartet und was passiert beim Aufrufen von http://localhost/~BENUTZERNAME/test1.cgi:

Fehlermeldung: You don´t have the permissions to access this site!!

Also, wohl keine Rechte dafür.

Auf der Anderen Seite nachgeschaut und folgendes gefunden:

Um die Verwendung von Perl oder Python zu ermöglichen, müssen die entsprechenden Module erst in der Apache Konfigurationsdatei httpd.conf aktiviert werden. Bei folgenden Einträgen muss die Raute entfernt werden:

* LoadModule perl_module libexec/httpd/libperl.so
* AddModule mod_perl.c
* LoadModule cgi_module libexec/httpd/mod_cgi.so
* AddModule mod_cgi.c


Also wieder die httpd.conf auf und bei den Perl_Modulen die Kommentarzeichen entfernt (die CGI_Module waren schon aktiv).

Server neu gestartet: Wieder nichts. Selbe Fehlermeldung.


Dann kam das hier:


Desweiteren muss die Ausführung von Skripten dem jeweiligen Benutzer ebenfalls explizit erlaubt werden. Geschieht das nicht, können Skripte nur im Verzeichnis /Library/WebServer/CGI-Executables/ gespeichert und von dort aus ausgeführt werden. Das Speichern eine Skriptes im Ordner /Users/[BENUTZERNAME]/Sites führt dann immer zu einer Fehlermeldung. Am besten man legt einen eigens für Skripte vorgesehen Ordner im Verzeichnis /Users/[BENUTZERNAME]/Sites an (beispielsweise “cgi-bin“). Um nun Apache mitzuteilen, dass dieser Ordner ausführbare Skripte enthält, speichert man folgende Zeilen in der Datei /etc/httpd/users/[BENUTZERNAME].conf:


Options +ExecCGI Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all


Options +ExecCGI

AddHandler cgi-script cgi pl

Anschliessend ist der Apache Webserver neu zu starten, damit die Änderungen angenommen werden.



So, also die aufgeführten Änderungen durchgeführt und, wieder die selbe Meldung. Wobei mir sich aus dem Absatz nicht erschließt, was mit den Zeilen

Options +ExecCGI

AddHandler cgi-script cgi pl

wieder gemeint ist, da diese auf der Originalseite einfach so im Absatz stehen und darauf nicht eingegangen wird. Allerdings sind das ja wieder die Änderungen aus der httpd.conf, hier soll ja in der /etc/httpd/users/[BENUTZERNAME].conf geändert werden ??!!

:confused:

Zu guter Letzt noch in der BASH ein chmod 755 auf mein Script gemacht, aber auch das brachte nichts.


Also kurzum: Erkennt Irgendjemand, was hier falsch ist??? habe ich irgendwo was vergessen oder auch zuviel geändert?? Muss ich spezielle Rechte verteilen, irgendwo??? Dachte eigentlich, dass das nicht nötig ist, wenn der Server normal unter meinem Benutzerlogin läuft....??

Ich bin ratlos....

Danke schonmal für die Hilfe!


Gruss


s0yl3nt-bl4ck
 
lange rede kurzer sinn die cgi's müssen im cgi-bin folder sein - steht in der /etc/apache/httpd.conf ;)

Code:
#  ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"


svrroot
 
Hm, leider hilft das auch nicht weiter. Habe das Script dort hin verschoben (hatte es auch ganz zu Beginn mal dort liegen) und beim aufrufen kommt wieder:

Forbidden
You don't have permission to access /~BENUTZERNAME/test1.cgi on this server.


:(
 
Wie hast du das Skript gestartet, über einen Link von einer Webseite oder im Terminal?
Oder anders gefragt, hast du schon versucht, es im Terminal zu starten, als es 755 Rechte hatte?

Übrigens, es müsste
Code:
print "Hallo, das ist ein Test";
heissen.
 
lange rede kurzer sinn die cgi's müssen im cgi-bin folder sein - steht in der /etc/apache/httpd.conf ;)

Code:
#  ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"


svrroot

Das ist eine Voraussetzung.

Die zweite sind die Rechte 755 für das Skript, und die dritte ist der richtige Aufruf des Skriptes, z.B. aus einem HTML-Formular heraus, etwa:

Code:
<form action="/cgi-bin/test1.cgi" method="post">

Dann sollte es funktionieren.

Und die Ausgabe des Skriptes sollte nicht als Text, sondern als HTML-Seite erfolgen.
Z.B.
Code:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Test</title></head>\n";
print "<body>hallo, das ist ein Test</body></html>\n";
 
Wie hast du das Skript gestartet, über einen Link von einer Webseite oder im Terminal?
Oder anders gefragt, hast du schon versucht, es im Terminal zu starten, als es 755 Rechte hatte?

Beides. Jeweils im terminal mit 755 Rechten und im Browser, da auch nachdem ich Rechte gesetzt hatte.



nabend, konnte das selbe Problem auch nicht lösen.
Lösung: MAMB

Das habe ich mir auch schon überlegt, aber: Es kann doch nicht wirklich sein, dass der installierte Server solche Zicken macht. Der integrierte Apache mitsamt aller Skripte hat doch bisher immer soviel Lob erhalten, ich will nicht ganz glauben, dass es einfach so nicht laufen will....




Das ist eine Voraussetzung.

Die zweite sind die Rechte 755 für das Skript, und die dritte ist der richtige Aufruf des Skriptes, z.B. aus einem HTML-Formular heraus, etwa:

Code:

<form action="/cgi-bin/test1.cgi" method="post">

Dann sollte es funktionieren.

Und die Ausgabe des Skriptes sollte nicht als Text, sondern als HTML-Seite erfolgen.
Z.B.
Code:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Test</title></head>\n";
print "<body>hallo, das ist ein Test</body></html>\n";


Also, ich Danke Dir sehr für deine Bemühungen und es soll jetzt auch nicht arrogant oder besserwisserisch klingen, aber ich habe seinerzeit auf meinen alten Rechnern recht viel mit Perl und dem Apache rumgespielt. Dort gab es nie ein Problem mit dem Ausführen der CGI Scripte. Im Gegenteil, ich habe damals jeweils nur in der httpd.conf im Eventhandler .cgi und .pl hinzugefügt und damit wars auch schon gut.

Davon ab, bin ich von meinem Mac begeistert wie eh und jeh, nur dass der Apache solche Mucken macht nervt mich etwas.

Ebenfalls kann ich Dir garantieren, dass es sicherlich nicht an dem CGI Script liegt bzw. an dem Aufbau des Scripts. Es bedarf keinerlei HTML Seite, um ein solches Script zum Laufen zu bekommen. Es reicht vollkommen, ein kurzes Print abzusetzen und er sollte es ausführen. (Ich habe auch versucht, alte Scripte auszuführen, darunter auch einige in HTML Formularen und bei allen kam die selbe Fehlermeldung).

So blöd es auch klingt, irgendwo muss ein Konflikt bestehen zwischen meinen Userrechten und dem Apache. Ich habe versucht, sämtliche Rechte zu vergeben, habe das Script auch auf 777 gesetzt aber es hat alles nichts gebracht.


Nach wie vor bin ich ratlos. Wenn sich in den nächsten Tagen nichs ergibt (man muss ja auch bisschen arbeiten zwischendurch) dann werde ich wohl zum XAMPP Package für Macs greifen und es damit probieren.


Wenn jemand noch ne Lösung parat hat, dann wäre ich froh, wenn Er/Sie es posten könnte.


MfG

s0yl3nt-bl4ck
 
Ebenfalls kann ich Dir garantieren, dass es sicherlich nicht an dem CGI Script liegt bzw. an dem Aufbau des Scripts. Es bedarf keinerlei HTML Seite, um ein solches Script zum Laufen zu bekommen. Es reicht vollkommen, ein kurzes Print abzusetzen und er sollte es ausführen. (Ich habe auch versucht, alte Scripte auszuführen, darunter auch einige in HTML Formularen und bei allen kam die selbe Fehlermeldung).

Natürlich kann man das Skript auch im Terminal starten.
Aber CGI macht Sinn und hat seine Stärken als Schnittstelle zwischen Webserver und HTML Seiten.

So blöd es auch klingt, irgendwo muss ein Konflikt bestehen zwischen meinen Userrechten und dem Apache. Ich habe versucht, sämtliche Rechte zu vergeben, habe das Script auch auf 777 gesetzt aber es hat alles nichts gebracht.

Sorry, aber bei dem, was du alles in der httpd.conf geändert hast, wundert es mich nicht, dass es nicht funktioniert. ;)

Bis auf die 755 Rechte des Skriptes sind wirklich keine der von dir aufgeführten Änderungen für das Funktionieren von CGI notwendig.

Ich kann dir nur empfehlen, es mit einer frischen, unverkorksten httpd.conf zu versuchen. Du hast ja (hoffentlich) eine Kopie der Datei mit dem Stand, bevor du sie editiert hast. Im Zweifelsfall muss die httpd.conf.default herhalten.

Dein .cgi oder auch .pl Skript packst du in das Standardverzeichnis /Library/WebServer/CGI-Executables/ gemäss dem ScriptAlias in der httpd.conf.
Mit chmod 755 die Rechte anpassen, falls noch nicht geschehen.
Dann bastelst du ein HTML-Formular mit dem richtigen Aufruf, alles wie oben beschrieben. Das war's schon.

Eigentlich nicht viel Aufwand. Und zerbrich dir bitte nicht den Kopf, was du alles in der httpd.conf ändern solltest ;)
 
Hallo,

ich komme erst jetzt wieder zum schreiben, sorry.

Also, ich habe nun die httpd.conf wieder im Originalzustand. Alles exakt so wie zuvor.

Dann habe ich folgendes gemacht: Mein Script in den Ordner /Library/webserver/cgi-executables gepackt und in der Bash mit Adminrechten den Befehl

sudo chmod 755 /Library/webserver/cgi-executables/test1.cgi

abgesetzt.

Die Rechte hat er auch scheinbar übernommen, aber beim Ausführen des Scripts dann wieder der altbekannte Fehler:

"Permission denied"

Ich kann garantieren, dass die httpd.conf im absoluten Originalzustand ist, keine einzige Änderung drin!!

Übrigens: Auch ein chmod 777 bringt den selben Fehler.

:confused:

Ich weiss echt nicht mehr weiter..... Was kann ich noch machen???



s0yl3nt-bl4ck
 
Hi,

nochmal ich.

Habe nun folgendes herausgefunden....

Nach dem Öffnen der Datei error_log, zu finden bei mir unter

Code:
/private/var/log/httpd/error_log

kann ich nun nachvollziehen, was genau als Fehlermeldung protokolliert wird, sobald ich mein Script unter http://localhost/~BENUTZERNAME/test1.cgi ausführen will.

Dort steht:

Code:
[Fri Aug 10 20:15:30 2007] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /Users/BENUTZERNAME/Sites/test1.cgi



Nun bin ich vollends verwirrt.

Was bitte hat denn nun das Attribut ExecCGI mit meinem "Sites" Verzeichnis zu tun?? Und warum verbietet mir mein Apache dann weiterhin den Zugriff??


:(
 
Dann habe ich folgendes gemacht: Mein Script in den Ordner /Library/webserver/cgi-executables gepackt und in der Bash mit Adminrechten den Befehl

sudo chmod 755 /Library/webserver/cgi-executables/test1.cgi

abgesetzt.

Die Rechte hat er auch scheinbar übernommen...

"scheinbar" reicht nicht, Kontrolle ist besser, sonst wird dat nix ;)
also mit ls -l Library/webserver/cgi-executables/test1.cgi prüfen!

Wie rufst du das Skript im Terminal auf? Richtig wäre z.B.:
Code:
perl /Library/WebServer/CGI-Executables/test1.cgi

Über den Browser geht auch ein direkter Aufruf:
http://localhost/cgi-bin/test1.cgi

Habe nun folgendes herausgefunden....

Code:
[Fri Aug 10 20:15:30 2007] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /Users/BENUTZERNAME/Sites/test1.cgi

Die Fehlermeldung deutet darauf hin, dass dein Skript in diesem Ordner nicht ausgeführt werden darf.

Demnach liegt es in Users/Benutzername/Sites/, sollte aber in /Library/WebServer/CGI-Executables/ liegen!
 
Der Test

Code:
ls -l Library/webserver/cgi-executables/test1.cgi

gibt aus:

Code:
-rwxr-xr-x

Also passt das wohl. :eek:

Der Aufruf

Code:
perl /Library/WebServer/CGI-Executables/test1.cgi

in der Bash bringt weder eine Fehlermeldung noch eine Anzeige wie gewünscht. Es passiert einfach garnichts. Er arbeitet kurz (nicht mal ne Sekunde) und dann springt er wieder in eine neue Bash Befehlszeile.


Über den Browser rufe ich das Script nun auf zweierlei Weise auf.

Die erste Version von Dir

Code:
http://localhost/cgi-bin/test1.cgi

bringt nun folgende Fehlermeldung:

Code:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


Laut den Angaben der Seiten, die ich gepostet habe, sollte der Aufruf ja so aussehen:

Code:
http://localhost/~BENUTZERNAME/test1.cgi

Also statt dem cgi-bin Ordner eben ~BENUTZERNAME

Zugegebener Maßen scheint mir das auch komisch, da ich davon ausgehe, dass der cgi-bin Ordner angesprochen werden muss, da die Ausführung der CGIs ja nur darauf beschränkt ist und nicht global.


Bei dem Aufruf mit ~BENUTZERNAME kommt dann die Meldung:

Code:
Forbidden
You don't have permission to access /~BENUTZERNAME/test1.cgi on this server.


Letzter Punkt:

Mein Script liegt zu 100% im Ordner /Library/WebServer/CGI-Executables/ !!!

Ich habs wirklich zehn mal kontrolliert und sofern ich nichts an den Augen habe, liegt es auch schon seit Beginn des ganzen Apache-Debakels im richtigen Ordner. :p

Ich kann auch gerne nen Screen posten mit dem Pfad zum Script, aber ich denke mal, dass glaubt man mir auch so... :D


Soweit erstmal...

Ich schaue mir gleich nochmal die error_log an, wegen dem anderen Aufruf im Browser.....


Gruss
 
Ok, hier nochmal der Auszug aus dem error_log von gerade eben:

Code:
[Fri Aug 10 23:33:54 2007] [error] [client 127.0.0.1] Premature end of script headers: /Library/WebServer/CGI-Executables/test1.cgi

[Fri Aug 10 23:33:54 2007] [error] (8)Exec format error: exec of /Library/WebServer/CGI-Executables/test1.cgi failed

[Fri Aug 10 23:33:54 2007] [error] [client 127.0.0.1] Premature end of script headers: /Library/WebServer/CGI-Executables/test1.cgi

[Fri Aug 10 23:37:53 2007] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /Users/BENUTZERNAME/Sites/test1.cgi


Wie gesagt, mein Script liegt auf jeden Fall im richtigen Verzeichnis!! Im Verzeichnis /Users/BENUTZERNAME/Sites/ existiert dieses Script nicht, dort ist nur der Ordner "Images" und die Standard index.html, die vom OS her schon dort liegen.

Mehr nicht...

Übrigens, dir drei Aufrufe um 23:33 Uhr sind die Fehlermeldungen bei den Aufrufen aus der Bash heraus....

Die Letzte Meldung ist beim Browseraufruf geloggt worden.....
 
Sorry, nochmal was, der Vollständigkeit halber:

Der Log Auszug war nicht ganz vollständig. Darum grade nochmal der Test mit

http://localhost/cgi-bin/test1.cgi

das bringt im error_log nun:

Code:
[Fri Aug 10 23:55:08 2007] [error] (8)Exec format error: exec of /Library/WebServer/CGI-Executables/test1.cgi failed

[Fri Aug 10 23:55:08 2007] [error] [client 127.0.0.1] Premature end of script headers: /Library/WebServer/CGI-Executables/test1.cgi

[Fri Aug 10 23:55:25 2007] [error] [client 127.0.0.1] File does not exist: /Library/WebServer/Documents/cgi-executables/test1.cgi



Nun wirds für mich wieder total verwirrend.

1. Warum rufe ich eigentlich laut deiner Angabe das ganze mit "cgi-bin" auf????

Der Ordner heisst doch "cgi-executables" ??? So wird das auch im Log aufgeführt....


2. Warum steht im error_log im letzten Teil:

Code:
File does not exist: /Library/WebServer/Documents/cgi-executables/test1.cgi


Warum plötzlich das "Documents" mit drin??? Der documents Ordner liegt zwar auch im Webserver Verzeichnis aber der cgi-executables Ordner liegt wiederum NICHT im Ordner documents !!??? :confused: :confused:


3. Klar ist mein Script dort nicht vorhanden, es liegt ja auch direkt im cgi-executables Ordner....


Ich muss eine rauchen....
 
Der Aufruf

Code:
perl /Library/WebServer/CGI-Executables/test1.cgi

in der Bash bringt weder eine Fehlermeldung noch eine Anzeige wie gewünscht. Es passiert einfach garnichts. Er arbeitet kurz (nicht mal ne Sekunde) und dann springt er wieder in eine neue Bash Befehlszeile.


Über den Browser rufe ich das Script nun auf zweierlei Weise auf.

Moin,

hier muss schon angesetzt werden. Es bringt nichts, das Skript über den Browser aufzurufen, wenn die Ausführung im Terminal schon scheitert.

Was soll das Skript denn machen, was erwartest du als Ergebnis?

Und noch etwas Wichtiges hast du vergessen, nämlich das Skript selbst zu posten. Ohne das ist die weitere Suche sinnlos.
 
Ich habe in das Script einfach das geschrieben, was Du wieter oben gepostet hattest:

Code:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Test</title></head>\n";
print "<body>hallo, das ist ein Test</body></html>\n";

Mehr ist da nicht drin....

Und was es machen soll?? Einfach ne Textausgabe erzeugen....


Gruss
 
ok, wenn ich das Skript im Terminal mit
perl /Library/WebServer/CGI-Executables/test1.cgi
aufrufe, erscheint als (richtige) Ausgabe:
Code:
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>CGI-Test</title></head>
<body>hallo, das ist ein Test</body></html>

Welchen Texteditor hast du zum Sichern der Datei verwendet?
Der gute TextEdit ist z.B. nicht geeignet, besser wäre ein Editor im Terminal, wie emacs oder vi.

Funktioniert dein Perl überhaupt einwandfrei?
Was ist mit dem berühmten Standardskript:
Code:
#!/usr/bin/perl
print "hallo Welt\n";
Läuft das bei dir?
 
Hi,

Ok, also ich habe nun einen riesen Schritt gemacht in die richtige Richtung!

Vorab: Ich benutze "Smultron" zum schreiben meiner Scripte.

Also, erstmal habe ich gerade festgestellt, dass ich einen Fehler gemacht habe, was das Speichern der Scripte betrifft.

Ich habe meine Dateien, z.B. die "test1", im cgi-executables Ordner gespeichert als

Code:
test1.cgi

(Das ganze jetzt mal rein auf die Bash bezogen!!)

Nach dem chmod 755 auf das Script kam eben gar keine Ausführung in der Bash, wie auf der ersten Seite beschrieben.

Nun habe ich gerade das selbe mit dem Hallo Welt Script gemacht, es als

Code:
hallowelt.cgi

gespeichert.

Aufruf in der Bash (bereits im Verzeichnis /Library/Webserver/cgi-executabels/) mit

Code:
perl hallowelt.cgi

bewirkte wieder mal nichts.

Dann fiel mir auf, dass ich eventuell mal das Ganze andersrum probieren sollte. Soll heissen: In meinem Ordner habe ich festgestellt, dass jedes Script, dass ich als irgendwas.cgi speichere, nicht mit dem Smultron Symbol hinterlegt wird sondern mit einem undefinierten Symbol, einem weissen Blatt Papier. Also habe ich das Hallo Welt Script einfach nochmal gespeichert und zwar rein als

Code:
hallowelt

Das hallowelt.cgi habe ich gelöscht, in der Bash chmod 755 auf hallowelt und aufgerufen mit

Code:
perl hallowelt

und siehe da, in der Bash erscheint:

Code:
hallo welt


Gut, dann habe ich mir das andere Script geschnappt mit

Code:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Test</title></head>\n";
print "<body>hallo, das ist ein Test</body></html>\n";

und habe es nochmals gespeichert unter

Code:
test1

ohne .cgi Endung.

Selbes Spiel, chmod 755 auf test1 und

Code:
perl test1

aufgerufen.

Ausgabe:

Code:
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>CGI-Test</title></head>
<body>hallo, das ist ein Test</body></html>

Also exakt wie bei Dir.

Damit wissen wir ja wohl nun, dass Perl funktioniert und dass es auch die richtigen Rechte hat (habs auch nochmal mit ls -l test1 kontrolliert) und dass das Script richtig geschrieben wurde.

Nun bleibt natürlich das Browserproblem und zudem frage ich mich:

Warum darf ich keine .cgi (oder auch .pl) Endung nehmen, so kenne ich das noch von damals???


Danke auf jeden Fall schonmal für die ganzen Tips!!

Gruss
 
Noch ein kurzer Hinweis:

In meinem error_log steht nun übrigens nach dem Aufruf in der Bash:

Code:
[Sat Aug 11 12:29:00 2007] [error] [client 127.0.0.1] malformed header from script. Bad header=hallo Welt: /Library/WebServer/CGI-Executables/hallowelt


Damit kann ich nicht so viel anfangen....
 
Damit wissen wir ja wohl nun, dass Perl funktioniert und dass es auch die richtigen Rechte hat (habs auch nochmal mit ls -l test1 kontrolliert) und dass das Script richtig geschrieben wurde.

Nun bleibt natürlich das Browserproblem und zudem frage ich mich:

Warum darf ich keine .cgi (oder auch .pl) Endung nehmen, so kenne ich das noch von damals???

Gut, das ist ja schon mal ein Anfang. :)
Das mit cgi-Endung und deinem Texteditor erscheint mir noch ein wenig suspekt...
Im Moment habe ich dafür keine Erklärung.

In meinem error_log steht nun übrigens nach dem Aufruf in der Bash:

Code:
[Sat Aug 11 12:29:00 2007] [error] [client 127.0.0.1] malformed header from script. Bad header=hallo Welt: /Library/WebServer/CGI-Executables/hallowelt

Im Terminal ist es eigentlich schnuppe. Es erfolgt brav die Ausgabe "hallo Welt" und es wird auch nichts in die /var/log/httpd/error_log geschrieben ... merkwürdig.

Deine Fehlermeldung ist eigentlich dafür typisch, wenn du dieses hallo Welt Skript im Browser aufrufst. Dann wird genau dieser Fehler in die error_log geschrieben und im Browser erscheint ein "Internal Server Error". Es fehlt der header, der die Ausgabe als html-Datei definiert, so wie im test1.cgi.
 
Zurück
Oben Unten