Perl / CGI - Fehlermeldung oder kein Zugriff

Diskutiere mit über: Perl / CGI - Fehlermeldung oder kein Zugriff im Mac OS X Entwickler, Programmierer Forum

  1. run4fun

    run4fun Thread Starter MacUser Mitglied

    Beiträge:
    26
    Zustimmungen:
    0
    Registriert seit:
    15.03.2004
    Hallo Leute,

    ich habe ein eMac und OS X 10.3.4
    Wenn ich im TERMINAL >perl -v< eingebe, erscheint folgende Meldung:
    ________________________________________________________________
    This is perl, v5.8.1-RC3 built for darwin-thread-multi-2level
    (with 1 registered patch, see perl -V for more detail)
    ________________________________________________________________

    Ich benutze den Apache 2.0.47.
    Sofern ich was auf der httpd.conf Datei ändern sollte, so liegt diese nicht unter /etc/httpd/httpd.conf sondern
    sie liegt unter /Library/Apache2/conf/httpd.conf.

    Wenn ich das Test-Skript (test-cgi) laufen lasse, funktioniert das auch:
    Das Test-Skript liegt im cgi-bin-Ordner unter Apache2. Der Pfad lautet:
    /Library/Apache2/cgi-bin/test-cgi.

    Aber wenn ich ein eigenes Skript in dieses Verzeichnis lege, erscheint entweder eine Meldung wie:
    ________________________________________________________________
    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    Please contact the server administrator, you@your.address 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.
    Apache/2.0.47 (Unix) DAV/2 PHP/4.3.2 Server at 127.0.0.1 Port 80
    ________________________________________________________________

    oder die Meldung, dass ich keine Rechte hätte, auf diesen Server zuzugreifen.

    Wenn ich ein Skript in mein Home-Verzeichnis lege, wird nur der Text angezigt, aber keine Befehle ausgeführt. Teilweise erscheinen auch die oben genannten Meldungen.

    Was mache ich falsch?

    Über eine Hilfe würde ich mich sehr freuen, da ich nunmehr viele Stunden und Tage damit verbracht habe dieses Problem selber zu lösen und einfach nicht weiter komme.

    Viele Grüße
    run4fun
    :confused:
     
  2. canfAN

    canfAN MacUser Mitglied

    Beiträge:
    66
    Zustimmungen:
    0
    Registriert seit:
    06.02.2003
    Das Script muss ausführbar sein (chmod 755 scriptname) und die erste Zeile muss zum Perl-Interpreter zeigen (etwa #!/usr/bin/perl -w).
    Um mehr Infos über einen Internal Server Error zu sehen, sollten die ersten Zeilen deines Scripts so aussehen:

    Code:
    #!/usr/bin/perl -w
    
    use strict;
    use warnings;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    
    # mehr code
    
    Funktioniert natürlich nur wenn die Datei ausführbar ist.
     
  3. run4fun

    run4fun Thread Starter MacUser Mitglied

    Beiträge:
    26
    Zustimmungen:
    0
    Registriert seit:
    15.03.2004
    Forbidden (WARUM?)

    Mein Skript "hello1.pl" funktioniert im Terminal, wenn ich es dort aufrufe unter "perl hello1.pl"
    Wenn ich es aber in Safari unter

    http://127.0.0.1/hello1.pl

    aufrufe, erscheint folgende Meldung:
    _______________________________________________________________
    Forbidden
    You don't have permission to access /web924/hello1.pl on this server.
    Apache/2.0.47 (Unix) DAV/2 PHP/4.3.2 Server at 127.0.0.1 Port 80
    _______________________________________________________________

    Ich schwöre, die Rechte von "hello1.pl sind auf "rwxrwxrwx" gesetzt. Warum erscheint im Safari obige Meldung???

    Achja, hier ist der Quelltext von "hello1.pl"

    ------------------------------------------------------------------------------------
    #!/usr/perl -w
    print "<html><body>Hallo Welt\n</body></html>";
    print "Ist da jemand?\n";
    print "Bitte tippe Deinen Namen ein!\n";
    $name = <STDIN>;
    print "Oh, ich bin nicht mehr alleine. Hallo $name!\n";
    ------------------------------------------------------------------------------------
     
  4. canfAN

    canfAN MacUser Mitglied

    Beiträge:
    66
    Zustimmungen:
    0
    Registriert seit:
    06.02.2003
    Du solltest das Skript mit ./hello1.pl aufrufen, wenn das funktioniert weisst du, dass es ausführbar ist. perl hello1.pl schickt den Inhalt der Datei an den Perl-Interpreter, der ihn ausführt, durch ./hello1.pl wird die Datei direkt ausgeführt, das heisst die Shell (bash) liest die erste Zeile im Skript und erkennt an "!#" das sie den Code an nachfolgendes Programm schicken soll.

    Bist du sicher, dass der URL stimmt?
    In deinem letzten Post sagtest du
    Demnach sollte das Skript mit http://127.0.0.1/cgi-bin/hello1.pl erreichbar sein.


    Diese Rechte erlauben jedem alles, der Modus für ein ausführbares Skript sollte 0755 sein (rwxr-xr-x), niemals 0777!


    1) Dieser Pfad ist mit 99%iger Sicherheit falsch, finde mit einem `which perl` im Terminal heraus wo dein Perl-Interpreter liegt (wahrscheinlich in /usr/bin/perl).
    2) Du gibst Text auf die Standardausgabe aus, bevor du einen HTTP-header an den Browser gesendet hast, das erzeugt bei CGI-Skripten einen "Internal Server Error".
    Sende (mindestens) "Content-type: text/html\n\n" an den Browser:

    Code:
    #!/usr/bin/perl -w
    
    print "Content-Type: text/html\n\n"; # genau so!
    print "<html><head><title>Hallo Welt!</title></head>";
    # ...
    
    Du kannst auch das CGI-Modul benutzen das dir viel Arbeit abnimmt, damit sähe dein Skript etwa so aus:

    Code:
    #!/usr/bin/perl -w
    
    use strict; 
    use CGI;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    
    my $c = new CGI;
    
    print $c->header, $c->start_html("Hallo Welt!");
    print "..."
    print $c->end_html();
    

    3) Du kannst so nicht von der Standardeingabe lesen, das geht im Terminal, als CGI-Skript jedoch nicht.
     
    Zuletzt bearbeitet: 20.08.2004
  5. run4fun

    run4fun Thread Starter MacUser Mitglied

    Beiträge:
    26
    Zustimmungen:
    0
    Registriert seit:
    15.03.2004
    Vielen Dank; jetzt geht es !

    Hallo canfAN,

    vielen Dank, dass Du Dir die Mühe gemacht hast um mir zu Antworten! carro
    Deine Anmerkungen haben mir geholfen die Probleme zu erkennen und zu beseitigen. Nun funktioniert das alles! :D


    Viele Grüße

    run4fun pepp
     
Die Seite wird geladen...
Ähnliche Themen - Perl CGI Fehlermeldung Forum Datum
[Perl] Programm für Funktionsgraphen funktioniert nicht richtig Mac OS X Entwickler, Programmierer 26.08.2013
Perl CPAN Module installieren nicht möglich Mac OS X Entwickler, Programmierer 08.09.2012
Unverständliche Fehlermeldung mit UIGestureRecognizer Mac OS X Entwickler, Programmierer 08.02.2012
Dashcode startet nicht mehr Mac OS X Entwickler, Programmierer 31.01.2012
UIPickerView: Fehlermeldung bei Werten Mac OS X Entwickler, Programmierer 26.05.2011

Diese Seite empfehlen