Perl und aufruf von Scripten

Bash, Shell, PHP, Python, Perl, CGI
markus72
Posts: 27
Joined: 2004-02-12 17:24

Perl und aufruf von Scripten

Post by markus72 »

Hallo ich kleiner blonder dummer habe da so ein problem ....

ich habe ein script im verzeichnis cgi-bin mit den rechten 755 und wenn ich das script aufrufe mit dem IE 6 dann kommt Datei Speichern unter... aber das is ja nu mal nicht sinn der sache ...

hier noch die ersten zeilen des scripts ...



#!/usr/bin/perl
##
###########################
## Server Info CGI v1.08 ##
###########################
##
## ######################################
## ## Server Info CGI v1.08 © 2000 ##
## ## http://www.widexl.com ##
## ## Made by Henk Boonstra ##
## ######################################
##
## This script gives information about your (web)server.
## Software, Modules, libraries, env, network...
##
## Install:
## Change the path to perl (The first line in this script).
## Upload the script in ASCII mode to your cgi-bin directory.
## chmod script to 755.
## Open the script in a browser.
##
##############################
##############################

use strict;
use warnings FATAL => 'all';
no warnings 'redefine'; # to be remove in production
use Carp;

our %info = ();
my $output = undef;
my $ver = 'v1.8';

find_prog();

print "Content-type: text/htmlnn";

my $header = qq|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Server Info script $ver - http://www.widexl.com</title>
<meta name="robots" content="noindex,nofollow">

<style type="text/css"><!--
BODY {
background-color : #FFFFFF;
font-family: verdana, arial, helvetica, sans-serif;
color : #484848;
font-size : 12px;
wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Perl und aufruf von Scripten

Post by wgot »

Hallo,

mit dem Script selber hat das nix zu tun.
Hast Du es als scriptname.pl auf den Server gelegt? Probier mal scriptname.cgi.

Wenn cgi geht aber pl nicht, in der httpd.conf in der Zeile

Code: Select all

AddHandler cgi-script .cgi .pl
das fehlende .pl nachtragen und Apache neu starten.

Gruß, Wolfgang
markus72
Posts: 27
Joined: 2004-02-12 17:24

Re: Perl und aufruf von Scripten

Post by markus72 »

also ich habe mal in der httpd.conf .pl hinter cgi dazugeschrieben und wenn ich jetzt das script aufrufe http//domain.de/cgi-bin/scriptname.pl oder .cgi bekomme ich im IE folgende fehler meldung HTTP 500 - Interner Serverfehler
Internet Explorer

was zum teufel läuft den da bei mir falsch ?
darkspirit
Posts: 553
Joined: 2002-10-05 16:39
Location: D'dorf

Re: Perl und aufruf von Scripten

Post by darkspirit »

Ein Blick in die error_log hilft dir weiter..
markus72
Posts: 27
Joined: 2004-02-12 17:24

Re: Perl und aufruf von Scripten

Post by markus72 »

ich habe mal noch ein kleines test script in das cgi-bin verzeichnis kopiert

aber auch hier bekomme ich die fehlermeldung HTTP 500 - Interner Serverfehler.

ist es möglich das perl bei mir nicht so richtig läuft ich habe auch keinen blassen schimmer wie ich das jetzt am besten teste ?

#!/usr/local/bin/perl
#===============================
# Testing CGI script installation
# Copyright 1999, Free Perl Code
# Created 08/15/99
#===============================
# This script is designed to test
# CGI script installation
#===============================
print "Content-type: text/plain", "nn";

print "Hello Internet World!";
wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Perl und aufruf von Scripten

Post by wgot »

Hallo,

wirf mal einen Blick in die suexec.log bzw suexec_log.

755 gesetzt, ascii hochgeladen, /usr/local/bin/perl existiert?

Gruß, Wolfgang
markus72
Posts: 27
Joined: 2004-02-12 17:24

Re: Perl und aufruf von Scripten

Post by markus72 »

also wenn ich ehrlich sein der blick in die erro_log macht mich nicht wirklich schlauer da ich permature end of script nichts anfangen kann !?

Ob da wohl einer einen denkanstoß für mich hat ?

[client xxxxxxxx] Premature end of script headers: /home/k/Xxxxxxx.de/public_html/cgi-bin/env.pl

[Thu Mar 4 22:51:12 2004] [error] [client XXXXXXX] Premature end of script headers: /home/k/XXXXXXX/public_html/cgi-bin/test.pl

[Thu Mar 4 22:52:12 2004] [error] [client XXXXXXXXX] Premature end of script headers: /home/k/XXXXXXXXX/public_html/cgi-bin/env.cgi
wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Perl und aufruf von Scripten

Post by wgot »

wirf mal einen Blick in die suexec.log bzw suexec_log.
markus72
Posts: 27
Joined: 2004-02-12 17:24

Re: Perl und aufruf von Scripten

Post by markus72 »

wgot wrote:Hallo,

wirf mal einen Blick in die suexec.log bzw suexec_log.

755 gesetzt, ascii hochgeladen, /usr/local/bin/perl existiert?

Gruß, Wolfgang
ein blick habe ich auch da mal reskiert
info: (target/actual) uid: (b26020410245160/b26020410245160) gid: (www/www) cmd: test.pl
[2004-03-04 22:51:12]: error: command not in docroot (/home/k/xxxxxxx/public_html/cgi-bin/test.pl)
[2004-03-04 22:52:12]: info: (target/actual) uid: (b26020410245160/b26020410245160) gid: (www/www) cmd: env.cgi
[2004-03-04 22:52:12]: error: command not in docroot (/home/k/xxxxxxxx/public_html/cgi-bin/env.cgi)

der sagt mir jetzt das der befehl nicht in der doc root steht aber dat kapiere ich jetzt nicht ... wieso steht der da nicht und welcher befehl muß da hin ?

zu den ander sachen rechte habe auf 755 und auch mit ascii hochgeladen.

Mit dem verzeichnis habe ich aber den jetzt mein problem ....

also perl habe ich unter usr/bin/ aber nicht unter usr/local/bin/perl

wat muß ich den da jetzt machen ?
wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Perl und aufruf von Scripten

Post by wgot »

Hallo,
markus72 wrote: also perl habe ich unter usr/bin/ aber nicht unter usr/local/bin/perl
wat muß ich den da jetzt machen ?
#!/usr/bin/perl als erste Scriptzeile.

suexec -V

Da steht der DocRoot von Suexec, mit Deinem vergleichen. Wenn nicht identisch, Forensuche, Problem gab's die letzten Wochen haufenweise.

Gruß, Wolfgang
holgerǃ
Posts: 4
Joined: 2004-03-06 14:31

Re: Perl und aufruf von Scripten

Post by holgerǃ »

Ok, ein ganz ähnliches, "mysteriöses" Problem hatte ich auch.
Scripte waren alle in Ordnung und liefen auf jedem server....nur nicht auf meinem.

Der Rätsels (Teil-) Lösung: Ã?ffne mal via SSH mit dem Midnight Commander die script-Datei (F4). Siehst Du dann an jedem Zeilenende ein ^M ?

Ich habe so an die 15 Windows-Editoren ausprobiert aber keiner konnte dieses Zeichen sichtbar machen. Ich weiß ehrlich gesagt im Moment noch nicht mal, ob es beim Upload hinzugefügt wird oder vorher schon da ist. Fest steht allerdings, daß es auch dann da ist wenn ich das script nicht in einem Editor geöffnet hab'.

So, mach das ^M in der ersten Zeile einfach weg. Den Rest ignoriert der Server. Dann läuft das script.

Grüße
Holger
wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Perl und aufruf von Scripten

Post by wgot »

Hallo Holger,

Dein Problem ist ein ganz anderes:
Unter Windows wird das Zeilenende mit ^m^n (= rn) markiert. Unter Linux nur ^n (= n). Die ^m werden unter Linux als Teil des Textes verstanden und dann wird z.B. nach /usr/bin/perl^m gesucht und die Datei perl^m natürlich nicht gefunden.

Einfache Lösung: für die Ã?bertragung von Scripts und anderen Textdateien im FTP-Programm ASCII-Mode einstellen. Dann werden die ^m automatisch entfernt bzw beim Download hinzugefügt.

Gruß, Wolfgang
holgerǃ
Posts: 4
Joined: 2004-03-06 14:31

Re: Perl und aufruf von Scripten

Post by holgerǃ »

Hi Wolfgang

nunja, das ist natürlich das erste an das man bei einem solchen Problem denkt.

Als nächstes beginnt man die Dateien, die auf einem anderen Server laufen, im Binärmodus (also unverändert) herunterzuladen und sie - ohne sie vorher auf Windows geöffnet zu haben - im Binärmodus auf den Problemserver hochzuladen.

Und wenn auch das nichts hilft, dann bittet man ein paar Freunde, das mal zu machen um auszuschließen, daß es am eigenen System oder dem FTP-Programm liegt.

Was aber wenn das immer noch nichts bringt?

Grüße
Holger
wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Perl und aufruf von Scripten

Post by wgot »

Hallo Holger,

Du kannst Dir die Dateien unter Windows mit dem Debugger ansehen.
Konsolenfenster (DOS-Fenster) öffnen, debug script.pl, d<return>
Rechts siehst Du den Text, und in der Hexdarstellung für jedes Zeilenende "0D 0A". Das ist korrekt, "0D 0D 0A" oder ähnlicher Unfug darf aber nicht auftreten (0D 0A 0D 0A ist natürlich eine Leerzeile).

Gruß, Wolfgang
holgerǃ
Posts: 4
Joined: 2004-03-06 14:31

Re: Perl und aufruf von Scripten

Post by holgerǃ »

Hi Wolfgang

Hexeditor!!! Warum bin ich darauf nicht früger gekommen? :)

Ja, bei meinen Dateien ist dieses Zeilenende-Zeichen tatsächlich vorhanden. (Naja, wäre auch unsinnig gewesen wenn es erst beim Upload hinzugefügt worden wäre).

Die Frage ist bloß: Wieso wird es durch den Upload im ASCII-Modus nicht entfernt? *grübel*

Grüße
Holger
wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Perl und aufruf von Scripten

Post by wgot »

Hallo Holger,

kann mir nur vorstellen, daß Du im FTP-Programm irgendwas falsch machst. Probier doch einfach mal ein anderes.

Nach dem Upload Dateigröße kontrollieren, die Datei ist auf dem Server kleiner als auf dem Win-PC, weil je Zeile ein Byte wegfällt.

Du kannst die Scripte auch mit dos2unix nachträglich korrigieren, aber das ist wohl am Problem vorbei.

Gruß, Wolfgang
holgerǃ
Posts: 4
Joined: 2004-03-06 14:31

Re: Perl und aufruf von Scripten

Post by holgerǃ »

Hi Wolfgang

an meinem FTP-Programm kann's nicht liegen.

Erstens bediene ich damit ja auch (bei gleicher Einstellung) andere Server und zweitens habe ich ja ein paar Freunde von mir gebeten, die Dateien mal von Ihrem System aus hochzuladen.

Das Ergebnis war immer das gleiche.

Mich würde allerdings mal interessieren, ob dieses Zeichen nicht auch an die anderen Server übertragen wird; diese das aber einfach ignorieren. Hab' auf die anderen Server leider keinen Zugriff via SSH.

Das einzige was ich tun konnte, um das herauszufinden war, die Dateien binär von den anderen Servern zu laden und dann in einem Hexeditor zu öffnen.
Hab' das gestern Abend gemacht.

Und ja, auch in diesen Dateien befindet sich das Windows-Zeilenende.
Ich halte diese Methode jedoch nicht unbedingt für sicher. Schließlich sollten die Zeichen im ASCII Modus ja auch gelöscht werden was nicht der fall ist...

Wenn es aber so ist, dann frage ich mich, was da wohl installiert sein könnte, das dieses Zeichen ignoriert...

Grüße
Holger
markus72
Posts: 27
Joined: 2004-02-12 17:24

Re: Perl und aufruf von Scripten

Post by markus72 »

also dank für eure Tips, damit konnte ich die probs mit dem Script lösen. Es liegt meist an den kleinigkeiten die man selber übersieht.

habt dank
dl7awl
Posts: 28
Joined: 2003-03-30 13:14
Location: Land Brandenburg

Re: Perl und aufruf von Scripten

Post by dl7awl »

Vollständigkeitshalber, auch wenn das akute Problem schon gelöst ist:

Man kann die unerwünschten Zeichen auch direkt auf dem Server durch Laden und wieder-Abspeichern mit manchem Editor entfernen. Definitiv weiß ich, dass es mit pico geht, vi angeblich auch.

Erschöpfend abgehandelt und erklärt u.a.: http://www.servercommunity.de/viewtopic.php?t=790

Gruß, Manfred