Debian Each CGI/Prel Problem

Also das ist meine 000-default im original:

Code:
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /htdocs/, but still have / go to the right place
                RedirectMatch ^/$ /htdocs/
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.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>

und so die geänderte:

Code:
NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /htdocs/, but still have / go to the right place
                RedirectMatch ^/$ /htdocs/
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.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>

Ich glaube ich hab jetzt alles so gemacht wie du. wenn fehler drin sind bitte posten.
 
Also ich hab, wie Bitmuncher eben bemerkte, was von SuSE und Debian durcheinander geworfen...

Aber: Sollte man nicht tatsächlich /cgi-bin/ außerhalb von htdocs ansiedeln? Ok, so ist es in dem Beispiel nun, aber wäre es nicht besser, /htdocs und /cgi-bin parallel in einem Ordner zu haben statt /cgi-bin innerhalb von /htdocs?

Also wenn man z.B. mehrere Virtualhosts betriebt, dann sowas wie:
/var/www/<V-Host>/htdocs/ (für HTML-Dateien etc)
/var/www/<V-Host>/cgi-bin/ (für CGI mit Perl etc)

Man soll doch extra nicht das Ausführen von aktiven Inhalten mit Systemrechten (was Perl halt hat, je nach Script) in htdocs erlauben, wenn sich das irgend wie vermeiden läßt. Darum sind doch die Verzeichnisse extra getrennt und werden die Aliase gestzt?
 
Das ScriptAlias ist falsch gesetzt und die Directory-Direktive dafür auch, wenn dein Skript unter /var/www/htdocs/cgi-bin/ liegt. Ausserdem sollte ein ServerName gesetzt werden. Wenn du irgendwo was geändert hast, dann bitte posten. ;)
 
Habs bemerkt und geändert aber er führt die datein immer nochnicht aus :(

EDIT// wo soll ich den servernamen hinschreiben bzw in welcher form kannst mir ein Beispiel posten bitte?

EDIT2// falls die Rechte eine Rolle spielen chmod vom /var/www/htdocs/cgi-bin/ sind 755 und von der test.pl im verzeichnis sind auf 755
 
Zuletzt bearbeitet:
Ist die Datei ausführbar und hat ein 'exit 0' am Ende? Was hast du geändert und was heisst "führt die Datei nicht aus"?
 
Das ist jetzt meine aktuelle 000-default Datei:

Code:
NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /htdocs/, but still have / go to the right place
                RedirectMatch ^/$ /htdocs/
        </Directory>

        ScriptAlias /cgi-bin/ /var/www/htdocs/cgi-bin/
        <Directory "/var/www/htdocs/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.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>

Und was du hiermit 'exit 0' meinst verste ich irgendwie nicht.

Das ist der Inhalt der test.pl

Code:
#!/usr/bin/perl -w

use strict;

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "<h1>Hurra, es klappt!</h1>\n";
print "</body></html>\n";

EDIT// mit nicht ausführen meine ich das er die Datei runterladen will.
 
Das Skript muss am Ende einen Exit-Code haben, muss also so aussehen:

Code:
#!/usr/bin/perl -w

use strict;

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "<h1>Hurra, es klappt!</h1>\n";
print "</body></html>\n";
# Hier einen Exit-Code zurueckgeben!
exit 0;

Was sagt 'ls -lh /var/www/htdocs/cgi-bin/test.pl'? 755 sollte theoretisch reichen. Um Probleme mit den Rechten auszuschliessen, kannst du einfach mal den Webserver-User als Owner setzen.
 
Zuletzt bearbeitet:
Deinen lezten Satz hab ich nicht verstanden *gg

Die Datei hab ich geändert funzt trotzdem nicht.

Ich habe eine frag und zwar muss ich in der Datei auch was ändern? /etc/apache2/sites-available/default

Die sieht bei mir so aus:

Code:
NameVirtualHost *
# Hauptserver
<VirtualHost *>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.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>

EDIT// es sagt das hier "-rwxr-xr-x 1 cr cr 271 2008-03-22 03:19 /var/www/htdocs/cgi-bin/test.pl"
 
Du editierst immer Bitmunchers Beispiel wieder kaputt...

Das mit dem Exitcode heißt das, was er unten in dein Script dazu geschrieben hat
 
Wieso Editir ich sie kaputt? ich hab nur das gemacht was er gesagt hat *gg

EDIT// Du liegst falsch das ist eine andere Datei die ich gepostet habe in der steht das so drin wie ich es da gepostet hab deswegen wa ja meine frage ob ich es da auch ändern muss :)
 
Zuletzt bearbeitet:
Nach deiner zuletzt geposteten 000-default ist das ScriptAlias und die zugehörige Directory-Direktive immernoch nicht auf dein CGI-Verzeichnis gesetzt, das ja laut deiner Aussage nicht /usr/lib/cgi-bin/ sondern /var/www/htdocs/cgi-bin/ ist.
 
/etc/apache2/sites-available/default hat er gepostet, nicht /etc/apache2/sites-enabled/000-default
 
Zuletzt bearbeitet:
Unter Debian ist das die Gleiche. 000-default ist ein Symlink auf [confdir]/sites-available/default.
 
Also ich poste jetzt nochmal beider Datein also 000-default und default ich habe sie schon geändert wer einen fehler entdeckt bitte sagen.

default:
Code:
NameVirtualHost *
# Hauptserver
<VirtualHost *>
        ServerAdmin webmaster@localhost
        ServerName localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /htdocs) when you go to /
                #RedirectMatch ^/$ /htdocs/
        </Directory>

        ScriptAlias /cgi-bin/ /var/www/htdocs/cgi-bin/
        <Directory "/var/www/htdocs/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.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>

000-default
Code:
NameVirtualHost *
# Hauptserver
<VirtualHost *>
        ServerAdmin webmaster@localhost
        ServerName localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /htdocs) when you go to /
                #RedirectMatch ^/$ /htdocs/
        </Directory>

        ScriptAlias /cgi-bin/ /var/www/htdocs/cgi-bin/
        <Directory "/var/www/htdocs/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.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>

PS: ich habe nicht gesehen das es schon seite 3 ist deswegen der verspätete post :D
 
Sieht soweit korrekt aus. Nun ist nur noch die Frage, ob dein Webserver Owner des Skripts ist und ob du das 'exit 0;' an's Ende des Skripts angehängt hast sowie, ob der Fehler immernoch ein 500 ist.
 
Ich hab das Script so genommen wie du es gepostet hast und aufn server in das verzeichnis geladen also /var/www/htdocs/cgi-bin/ und er will es immernoch runterladen

EDIT// ich wollt nur mal sagen danke für die hilfe und die Mühe die ihr euch macht :) echt nett
 
Und ob das mit dem Symlink überhaupt noch stimmt... das würde ich so belassen. Also der von BM beschriebene. So daß es nicht inzwischen 2 Dateien sind, sondern ein und dieselbe.
 
Ich hab doch beide Dateien wie sie aktuell bei mir gespeichert sind gepostet ?(
 
Nur um mal ein Missverständnis zu klären. Du hast in sites-enabled sowohl eine 000-default als auch eine 'default'?
 

Ähnliche Themen

ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern

Breite einer Tabelle via CSS definieren

dovecot und postfix Konfiguration Problem

Perl auf SAT-Receiver

Hilfe mit CGI

Zurück
Oben