welches Mailformular für einen VPower Server C ist empfehlenswert

  • Thread starter Thread starter dogsch
  • Start date Start date
Beispiel (für Perl):
#!/usr/bin/perl

Du müsstest also mal prüfen, ob die erste Zeile in dem Perlskript, wirklich den richtigen Pfad zu Perl enthält.

da liegt's auch und so isses im Skript

Wenn die Zeile richtig ist und der Fehler nicht behoben ist, dann mal den Parameter -w im Perl Skript hinzufügen, wenn noch nicht gemacht:

#!<pfad zu perl binary> -w

Danach das Skript nochmal ausführen und deine error_log des Webservers prüfen. Mit dem Schalter -w wird jedes warning des Perl Interpreters auch in das Apache Log geschrieben.

hmmm, das hat keine andere Fehlermeldung gebracht
 
Noch so 'ne mögliche Fehlerquelle: Zeilenende ist CR/LF (Windows)...
Wenn dem so ist, das Skript mal mit unix2dos oder war es dos2unix? (ich kann mir das nie merken) entsprechend umwandeln.

Und noch 'ne Idee: Der Apache weiß nicht, das er .pl Dateien als CGI behandeln soll. Entweder die httpd Konfigurationsdatei anpassen oder das Skript mal zu einer .cgi Datei umkopieren.
 
Last edited by a moderator:
Und noch 'ne Idee: Der Apache weiß nicht, das er .pl Dateien als CGI behandeln soll. Entweder die httpd Konfigurationsdatei anpassen oder das Skript mal zu einer .cgi Datei umkopieren.

ein Ändern auf .cgi hat leider auch nichts gebracht :(

Wie müßte die httpd.conf angepaßt werden, das einzige was Perl betrifft ist eine Zeile

Code:
#  Filesystem layout:
#
# /etc/apache2/
...
#  |-- mod_perl-startup.pl

Selbst ein Hello World Skript

Code:
#!/usr/bin/perl -w
print "Hallo Welt\n";

läuft auf den gleichen Fehler
 
Hast du das Perl Skript auch wie beschrieben (CGI/Einfaches Mailskript) eingerichtet? Wobei ich speziell die HTML Datei meine, inklusive der Parameter aus dem Formular.

Soweit ich das sehe, braucht das Skript, die Parameter. Zumal es keinerlei Fehlerbehandlung der Parameter Werte in dem Skript gibt.

Der Fehler "Premature End ..." kommt wahrscheinlich daher, das du das Skript ohne Parameter aufrufst. Im Skript selber wird aber einer dieser Parameter an die Variable $returnhtml weitergegeben (ein kompletter Link zu einer HTML Seite). Diese wiederum wird einfach mit

Code:
print "Location: $returnhtml\n\n";
an den Browser geschickt.
Wenn diese Variable aber nicht (auf eine HTML Datei, wie beschrieben) gesetzt ist bzw. ganz leer ist, weiß der Browser nicht, was da kommt. Womit wir wieder beim content-type sind. :D
 
aber steckt der Fehler nicht vielleicht doch tiefer, denn das o.g. helloworld Skript tut's ja auch nicht
 
aber steckt der Fehler nicht vielleicht doch tiefer, denn das o.g. helloworld Skript tut's ja auch nicht


Wenn du das Hello World Skript über einen Browser aufrufst, dann schreibe bitte

Code:
print "Content-type:text/html\n\n";

als erste print Anweisung hin. Das sollte helfen. (Content-type, wie erwähnt :D )

Wenn du das Skript lediglich per Kommandozeile aufrufst

perl <script name>

dann sollte es ohne die zusätzliche Content-type Zeile funktionieren.
 
ok habe es so versuch - nada - immer dieselbe blöde verk...te Fehlermeldung
 
Also ich habe es jetzt bei mir lokal mit dem Hello World probiert.

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

print "Content-type:text/html\n\n";
print "Hello World.\n";

Zugriffsrechte auf 755

Das hat funktioniert, sowohl als .pl als auch .cgi .

Mir gehen jetzt langsam die Ideen aus.

Geh doch nochmal folgende Punkte durch (die Liste kann natürlich unvollständig sein):

  1. Stimmt der Pfad zu Perl, der in der ersten Zeile des Skriptes zu stehen hat?
  2. Wird das Skript (in deinem speziellen Fall) mit den notwendigen Parametern über das beschriebene HTML Formular aufgerufen?
  3. Stimmt der Pfad (in deinem speziellen Fall) zu der als Parameter übergebenen HTML Datei?
  4. Ist die unter 3. verwendete HTML Datei für den Webserver auch lesbar?
  5. Hat das Skript die richtigen Zugriffsrechte (755)?
  6. Kannst du das Skript erfolgreich direkt von der Kommandozeile aufrufen? ( sollte bei 755 und richtiger Shebang Zeile mit ./<skriptname> in der Shell funktionieren)
  7. Ist in deiner vHost Konfiguration des Webservers auch alles richtig konfiguriert (htdocs Pfad, cgi Pfad, ...)
  8. Wurde der Webserver neu gestartet, falls du etwas an der Konfiguration desselbigen geändert hast?

Noch ein Hinweis: Ich betrachte das ganze immer ohne Plesk. Deshalb kann es natürlich sein, das eventuell noch an Plesk was geprüft werden muß, um das Problem zu lösen. Dazu kann ich aber nix sagen, da ich mich mit Plesk nicht auskenne.
 
Last edited by a moderator:
Moin, bin wieder da und es kann munter weitergehen ;-)

Also ich habe es jetzt bei mir lokal mit dem Hello World probiert.
Zugriffsrechte auf 755
Das hat funktioniert, sowohl als .pl als auch .cgi .
Mir gehen jetzt langsam die Ideen aus.
[/QUOTE=Mario;107210]

hier genauso - funktionierrt und keine Ideen - es funktioniert auch auf der Konsole des nichtlokalen Webservers

  1. Stimmt der Pfad zu Perl, der in der ersten Zeile des Skriptes zu stehen hat?
  2. Wird das Skript (in deinem speziellen Fall) mit den notwendigen Parametern über das beschriebene HTML Formular aufgerufen?
  3. Stimmt der Pfad (in deinem speziellen Fall) zu der als Parameter übergebenen HTML Datei?
  4. Ist die unter 3. verwendete HTML Datei für den Webserver auch lesbar?
  5. Hat das Skript die richtigen Zugriffsrechte (755)?
  6. Kannst du das Skript erfolgreich direkt von der Kommandozeile aufrufen? ( sollte bei 755 und richtiger Shebang Zeile mit ./<skriptname> in der Shell funktionieren)
  7. Ist in deiner vHost Konfiguration des Webservers auch alles richtig konfiguriert (htdocs Pfad, cgi Pfad, ...)
  8. Wurde der Webserver neu gestartet, falls du etwas an der Konfiguration desselbigen geändert hast?

1. ja
2. würde ja erstmal gerne das helloworld zum Laufen bekommen und dann weiterhangeln
3. siehe 2 (?)
4. siehe 2 / 4 (?)
5. ja
6. ja
7. kannst Du mir da ein wneig unter die Arme greifen (was mus wohin) ggf. reicht auch ein Link
8. ja
 
Was die Sache mit der Konfiguration des Webservers angeht, ist dann wahrscheinlich Plesk aktuell. Und das kenne ich nicht.

Ich würde erwarten, das alles was mit dem Webserver zu tun hat, über die Plesk Oberfläche einzustellen ist. Dazu gehört auch das Festlegen eines CGI Pfades (zum Beispiel). Oder nicht? Ein Plesk Profi ist gefragt.
-
Ich denke du solltest dich nochmal durch die Pleskoberfläche kämpfen und alles prüfen. Mehr fällt mir jetzt nicht mehr ein.
 
hmmm, beim googlen habe ich gefunden, das wenn man das Perlskript aus dem cgi-bin Ordner zieht es laufen würde und das tut es auch (jedenfalls habe ich es mit dem helloworld.pl erfolgreich ausprobiert).

Aber warum läuft's nicht im cgi-bin Ordner?

Gruß

Dirk
 
Gelöst !!!

in /var/log/apache2/suexec.log habe ich gefunden das der Benutzer und die Gruppe geändert werden muss, wobei die Gruppe "psacln" heissen muss
 
ok, helloworld.pl geht nur damit kann man ja nicht allzu sehr was machen, also habe ich das gleiche jetzt bei meiner selfmail.pl gemacht aber irgendwie scheint das mit

Code:
# -------> SMTP-Programm zum Versenden der Mail:
$Sendmail_Prog = "/usr/lib/sendmail";

bzw.

$Sendmail_Prog = "/var/qmail/bin/sendmail";

nicht hinzuhauen.

error_log meint

Code:
Insecure $ENV{PATH} while running setuid at selfmail.pl

Fängt jetzt wieder alles von vorne an - butte nicht :(
 
Back
Top