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....
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 ??!!
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
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....
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 ??!!
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