gulli:board Logo

Anzeige


  Antwort
hirsch
Mitglied
 
Registrierungsdatum: Feb 2000
Ort: im Wald *g*
Beiträge: 129
Ubuntu: Apache + CGI im homeverzeichnis?

Hi,

um lokal einige CGI-Skripte zu testen bzw. laufen zu lassen, hab ich mir in (K)Ubuntu eine Virtualhost im Homeverzeichnis eingerichtet. Meine Config aus /etc/apache2/sites-available:
Code:
NameVirtualHost testseite.linworks <VirtualHost testseite.linworks> ServerName testseite.linworks ServerAdmin webmaster@localhost DocumentRoot /home/industrie13/web/testseite/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /home/industrie13/web/testseite/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place #RedirectMatch ^/$ /apache2-default/ </Directory> # ScriptAlias /cgi-bin/ /home/industrie13/web/testseite/cgi-bin/ # <Directory "/home/industrie13/web/testseite/cgi-bin"> # AllowOverride None # Options ExecCGI -MultiViews +SymLinksIfOwnerMatch # Order allow,deny # Allow from all # </Directory> ScriptAlias /cgi-bin/ "/home/industrie13/web/testseite/cgi-bin/" <Directory "/home/industrie13/web/testseite/cgi-bin/"> AllowOverride Indexes FileInfo Authconfig Options +ExecCGI +Indexes +Includes -FollowSymlinks SetHandler cgi-script AddHandler cgi-script .cgi .pl Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error_linworks1.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access_linworks1.log combined ServerSignature On Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>

Soweit, sogut - es läuft ... bis eben auf das CGI.
Rufe ich ein Script im Browser auf, kriege ich einen 500 Internal Server Error, samt enem "Premature end of script headers".

Meine server.log:
Code:
127.0.0.1 - - [18/Jul/2007:23:15:10 +0200] "GET /cgi-bin/timetest.pl HTTP/1.1" 500 667 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)"
und meine error.log:
Code:
[Wed Jul 18 23:15:10 2007] [error] [client 127.0.0.1] Premature end of script headers: timetest.pl

Hat jemand eine Idee, was hier schief läuft? Muss da vielleicht ein suexec her?
Ich hatte die Seite extra ins Homeverzeichnis gelegt, damit ich beim basteln nicht immer "root" gehen muss, wie als wenn sie im "/var/www/" liegen würde.

Wie wird denn das normalerweise gelöst?
Alt 18. 07. 2007, 22:24 hirsch is offline Mit Zitat antworten #1
hashy
Mitglied
 
Benutzerbild von hashy
 
Registrierungsdatum: Jul 2007
Beiträge: 675
Re: Ubuntu: Apache + CGI im homeverzeichnis?

Funktioniert das Script den so auf der Konsole?
Alt 19. 07. 2007, 06:51 hashy is offline Mit Zitat antworten #2
Datafreak
quassel-irc.org User
 
Benutzerbild von Datafreak
 
Registrierungsdatum: Sep 2004
Ort: $HOME
Beiträge: 1.386
Re: Ubuntu: Apache + CGI im homeverzeichnis?

Hast du in deinem Script sowas wie
Code:
print "Content-type: text/html\n\n
angegeben?

MFG
Datafreak
Alt 19. 07. 2007, 07:03 Datafreak is offline Mit Zitat antworten #3
hirsch
Mitglied
(Threadstarter)
 
Registrierungsdatum: Feb 2000
Ort: im Wald *g*
Beiträge: 129
Re: Ubuntu: Apache + CGI im homeverzeichnis?

jep, funktioniert sowohl auf der Konsole ohne Fehlermeldungen, und
Code:
print "Content-type: text/html\n\n
ist auch dabei.

Könnt es euch gern mal anschauen, ist erstmal nur ein schnell zusammengeschustertes Testscript um zu sehen, ob .cgi's/.pl auf localhost laufen, aber wie gesagt, ich denke, dass der Fehler irgendwo in der Konfiguration des Apache liegt.

Code:
#!/usr/bin/perl-w use strict; print "Content-Type: text/html\n\n"; my $date=localtime; # Die HTML-Seite print " <html> <head><title>Eine einfache Webseite</title></head> <body> <center> <h2>Hallo</h2>"; print "$date </center> </body></html>";

Ob es was mit der Rechtevergabe zu tun hat? Muss ich als User evtl der Gruppe www-data (also der, von Apache) angehören? Aber dann würde als Fehler doch auch erstmal ein "Forbidden" kommen, oder?
Alt 19. 07. 2007, 09:29 hirsch is offline Mit Zitat antworten #4
hashy
Mitglied
 
Benutzerbild von hashy
 
Registrierungsdatum: Jul 2007
Beiträge: 675
Re: Ubuntu: Apache + CGI im homeverzeichnis?

Geb dem Script mal netterweise nen chmod 777.
Aber auch nur testweise ob es an den Rechten liegt.
Alt 19. 07. 2007, 10:02 hashy is offline Mit Zitat antworten #5
hirsch
Mitglied
(Threadstarter)
 
Registrierungsdatum: Feb 2000
Ort: im Wald *g*
Beiträge: 129
Re: Ubuntu: Apache + CGI im homeverzeichnis?

done that und keine veränderung :/
Alt 19. 07. 2007, 10:14 hirsch is offline Mit Zitat antworten #6
hirsch
Mitglied
(Threadstarter)
 
Registrierungsdatum: Feb 2000
Ort: im Wald *g*
Beiträge: 129
Re: Ubuntu: Apache + CGI im homeverzeichnis?

Es gibt Dinge, die sind mir einfach unerklärlich. Habe jetzt mir eine neue Testdatei erstellt:first.pl
Code:
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World.";
mit sudo chmod a+x first.pl die Rechte gesetzt und es funzt (auch wen ich noch ein paar Anweisungen hinzufüge wie localtime usw. s.o.) . ... während meine vorige Testdatei nach wie vor den gleichen Fehler ausgibt.

Habe testweise den ganzen code der first.pl in die timetest.pl kopiert ... selbst dann lief es nicht ... die Rechte sind haargenau dieselben.

Nunja, weiß der Geier ... hauptsache es läuft auch weiterhin bei allen, die noch kommen.
Alt 19. 07. 2007, 12:19 hirsch is offline Mit Zitat antworten #7
hirsch
Mitglied
(Threadstarter)
 
Registrierungsdatum: Feb 2000
Ort: im Wald *g*
Beiträge: 129
Re: Ubuntu: Apache + CGI im homeverzeichnis?

An alle, die die Auflösung vielleicht noch interessiert, die alte Datei lief weiterhin nicht, habe den Grund dafür allerdings gefunden.

Gebe ich im Terminal den Pfadnamen zum Script ohne vorangestelltes "perl" an, erhalte ich:
industrie13@linworks:~$ /pfad/zum/script.cgi
bash: /pfad/zum/script.cgi: /usr/bin/perl^M: bad interpreter: No such file or directory

Soviel ich in Erfahrung bringen konnte, tritt dieses "^M" normalerweise auf, wenn ein Script unter Windows bzw. mit Windows-Zeilenumbrüchen (\r\n) erstellt wurde und dann unter Linux/Unix ausgeführt werden soll. Allerdings hab ich im Netz bei meiner Recherche auch Beispiele gefunden, wo ein Script z.B. unter Fedora erstellt wurde, unter jenem auch laufen sollte und es trotzdem dazu kam (http://www.linuxforums.org/forum/red...irectory.html).

Lasse ich mir das ganze Script über 'cat -v script.cgi' ausgeben, zeigt er mir jedenfalls in jeder Zeile dieses \r\n "^M" an.

Die Frage, die sich dann stellt, ist, warum dieses Script dann mit seinen \r\n - Umbrüchen auf normalen Linux-Servern problemlos lief, die doch als Umbruch lediglich ein \n erfordern.
Auflösung: beim Hochladen via FTP im ASCII-Mode werden die Zeilenumrüche entsprechend dem Unixstandard in ein einfaches \n umgewandelt.

Bei mir kam dieser Mechanismus eben nicht zum Tragen, weil ich in meiner lokalen Testumgebung die Scripte nicht im ASCII-Mode hochladen musste und demnach die Anpassung der Zeilenumbrüche wegfiel.

Tja, soviel Kopfzerbrechen wegen so einer Kleinigkeit ... aber wenigstens wieder was gelernt
Alt 22. 07. 2007, 14:47 hirsch is offline Mit Zitat antworten #8
Themen-Optionen Antwort


Themen-Optionen

Gehe zu



Alle Zeitangaben in UTC +1. Es ist jetzt 23:35 Uhr.
Angetrieben von vBulletin
Copyright ©2000 - 2006, Jelsoft Enterprises Ltd.
neurosis.gullisys.net

Anmelden

Benutzername
Kennwort
© Copyright 1998-2008 gulli.com home | regeln | sitemap | kontakt | impressum | partner | downloads | disclaimer |
Message Boards and Forums Directory