Schrift
[thread]10992[/thread]

Perl auf SAT-Receiver



<< >> 10 Einträge, 1 Seite
eriche
 2007-12-10 19:56
#103699 #103699
User since
2007-12-10
3 Artikel
BenutzerIn
[default_avatar]
Hello,

ich habe bereits erfolgreich "Apache/2.0.44" und "PHP Version 4.3.0" laufen.
Leider habe ich Probleme beim Perl

Ich habe folgendes Script zwecks Testing in "httpd\htdocs" abgelegt

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/hdd/opt/perl/bin/perl -d

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";

$Zahl = 42;
$Quadrat = $Zahl * $Zahl;
print "Das Quadrat von ", $Zahl, " = ", $Quadrat, "\n";


zurück bekomme ich

Code: (dl )
1
2
3
#!/hdd/opt/perl/bin/perl -d use strict; print "Content-type: text/html\n\n"; print '', "\n"; print "\n"; print "
Hurra, es klappt!
\n"; print "\n"; $Zahl = 42; $Quadrat = $Zahl * $Zahl; print "Das Quadrat von ", $Zahl, " = ", $Quadrat, "\n";


Schaut so aus, als würde die *.pl Datei vom Apache interpretiert werden!

Was kann ich machen

Gruß erich
#Kein Kommentar
 2007-12-10 20:07
#103701 #103701
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
eriche+2007-12-10 18:56:03--
Schaut so aus, als würde die *.pl Datei vom Apache interpretiert werden!


naja, für mich sieht es eher so aus, als würde sie nicht interpretiert werden.

eriche+2007-12-10 18:56:03--
Was kann ich machen ?


normalerweise muss man seine *.cgi- (oder *.pl) in den ordner 'cgi-bin' legen
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
GwenDragon
 2007-12-10 20:28
#103704 #103704
User since
2005-01-17
14747 Artikel
Admin1
[Homepage]
user image
1)
Code: (dl )
#!/hdd/opt/perl/bin/perl -d

Das ist doch kein korrekter Pfad für ein installiertes Perl!

2) Ist die Datei ausführbar?

3)
Deine Ausgabe gehört aber noch vor das </body> vom HTML, ist syntaktisch nicht an der richtigen Stelle.
ptk
 2007-12-10 21:30
#103711 #103711
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
GwenDragon+2007-12-10 19:28:35--
1)
Code: (dl )
#!/hdd/opt/perl/bin/perl -d

Das ist doch kein korrekter Pfad für ein installiertes Perl!

Wieso sollte der Pfad nicht korrekt sein?

Aber -d ist höchstwahrscheinlich falsch. Wenn man den Debugger unter Apache starten möchte, muss man andere Wege gehen (z.B. Devel::ptkdb, oder httpd -X zusammen mit mod_perl)
GwenDragon
 2007-12-11 13:56
#103733 #103733
User since
2005-01-17
14747 Artikel
Admin1
[Homepage]
user image
/hdd/opt ???
Sowas gibt es unter Linux/UN*X? Kann mich nicht entsinnen. Sieht mir aus wie eingehängtes Laufwerk.
Na, egal. Kann meinetwegen auch unter /tmp/perl/ oder /dev/tmp/bratwurst liegen. Solange es irgendwie im Suchpfad ist.

Übrigens das #!/hdd/opt/perl/bin/perl -d muss in der erste Zeile des Skripts stehen.

-d ist falsch. Denn so wie im Skript läuft der Debugger nicht mit Apache.
Sollte wohl -w heißen, oder?

Wenn dein Perl-Skript auch außerhalb des cgi-bin laufen soll, muss in der Apache-Konfiguration noch:
AddHandler cgi-script .cgi .pl
und
Options +ExecCGI
hinzugefügt werden.

Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
DocumentRoot /wwwroot/users/test/web
<Directory /wwwroot/users/test/web>
AddHandler cgi-script .cgi .pl

Options Indexes MultiViews +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
MechaTikal
 2007-12-11 15:42
#103735 #103735
User since
2007-10-10
20 Artikel
BenutzerIn
[default_avatar]
GwenDragon+2007-12-11 12:56:56--
/hdd/opt ???
Sowas gibt es unter Linux/UN*X? Kann mich nicht entsinnen. Sieht mir aus wie eingehängtes Laufwerk.

Hier geht es doch um den Satellitenreceiver, auf dem die Software aufgespielt ist!
Ich kann auch nicht groß helfen, aber eine kleine Anleitung habe ich hier gefunden.
GwenDragon
 2007-12-11 18:59
#103741 #103741
User since
2005-01-17
14747 Artikel
Admin1
[Homepage]
user image
Na, wenn es um ein solches System geht, weiß ich eh nichts mehr.
Viel Erfolg noch.
eriche
 2007-12-12 19:27
#103797 #103797
User since
2007-12-10
3 Artikel
BenutzerIn
[default_avatar]
/hdd/opt ???
Sowas gibt es unter Linux/UN*X? Kann mich nicht entsinnen. Sieht mir aus wie eingehängtes Laufwerk.

MechaTikal hat das voll erkannt!

Es handelt sich um meinem Sat Receiver - da läuft Enigma drauf und weil der Flashspeicher sehr klein ist, habe ich Apache und Perl eben auf meiner Festplatte "hdd" laufen :)

Ich werde einmal eure Tips befolgen - denke, dass ich nur in der httpd.conf was ändern muss - da perl sehr wohl interprediert wird wenn ich das kanze via Console mache.

Gruß Erich
eriche
 2007-12-12 19:55
#103801 #103801
User since
2007-12-10
3 Artikel
BenutzerIn
[default_avatar]
JEA das Testscript funkt schon mal!

JEDOCH läuft das ganze bei folgenden Script nicht :(

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/hdd/opt/perl/bin/perl -w
# test.pl v6.01.18
# (c)2002-2006 Cusimano.Com Corporation, all rights reserved

$www = $ENV{'SERVER_PORT'} ne "";
eval "use Compress::Zlib"; $hasCompress = $@ ? 0 : 1;
eval "use LWP"; $hasLWP = $@ ? 0 : 1;
eval "use LWP::Simple"; $hasLWPsimple = $@ ? 0 : 1;
if ($hasLWPsimple) {
eval "use LWP::UserAgent";
my $ua = LWP::UserAgent->new(timeout => 30);
$u = "http://www.c3scripts.com/test/test.txt";
$resp = $ua->request(HTTP::Request->new('GET', $u));
$okLWP = $resp->content =~ /test\.pl/i;
}
eval "use CGI::Carp qw(fatalsToBrowser)"; $hasCGI = $@ ? 0 : 1;
$w = 20; $f = "<b>%" . $w . "s</b> : %s\n"; $f2 = " " x $w . " & %s\n";
print "Content-type: text/html\n\n<html><body><pre>" if ($www);
printf $f, "test.pl", "v6.01.18";
printf $f, "Perl", "v$]";
printf $f, "CGI::Carp", ($hasCGI? "" : "not ") . "installed";
printf $f, "Compress::Zlib", ($hasCompress? "" : "not ") . "installed";
printf $f, "LWP", ($hasLWP? "v$LWP::VERSION " : "not ") . "installed";
printf $f, "LWP::Simple", ($hasLWPsimple? "" : "not ") . "installed";
printf $f, "LWP::Simple", "rx " . ($okLWP? "" : "not ") . "ok" if ($hasLWPsimple);
printf $f, "\@INC", $INC[0]; foreach $x (1..$#INC) { printf $f2, $INC[$x];}
foreach $x (sort keys %ENV)
{ printf $f, $x, $ENV{$x} }
print "</pre></body></html>\n" if ($www);
1;


ich erhalte folgenden Fehler

Code: (dl )
1
2
3
4
5
6
7
8
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.44 (Unix) PHP/4.3.0 Server at 192.168.1.88 Port 8080


führe ich das Script über die Commandline aus funkt es jedoch!
Was kann da der Apache haben?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
root@dm7020:/media/hdd/opt/perl/bin> perl /hdd/opt/httpd/htdocs/test.pl
Use of uninitialized value in string ne at /hdd/opt/httpd/htdocs/test.pl line 5.
<b> test.pl</b> : v6.01.18
<b> Perl</b> : v5.008
<b> CGI::Carp</b> : installed
<b> Compress::Zlib</b> : not installed
<b> LWP</b> : not installed
<b> LWP::Simple</b> : not installed
<b> @INC</b> : /hdd/opt/perl/lib/5.8.0/ppc-linux
& /hdd/opt/perl/lib/5.8.0
& /hdd/opt/perl/lib/site_perl/5.8.0/ppc-linux
& /hdd/opt/perl/lib/site_perl/5.8.0
& /hdd/opt/perl/lib/site_perl
& .
<b> EDITOR</b> : /bin/vi
<b> HOME</b> : /home/root
<b> LOGNAME</b> : root
<b> OLDPWD</b> : /hdd/opt/perl
<b> PATH</b> : /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/
sbin:/sbin:
<b> PS1</b> : \u@\h:\w\>
<b> PWD</b> : /hdd/opt/perl/bin
<b> SHELL</b> : /bin/sh
<b> TERM</b> : xterm-color
<b> USER</b> : root
root@dm7020:/media/hdd/opt/perl/bin>



DAS ERRORLOG vom Apache sagt folgendes:

[Wed Dec 12 17:54:26 2007] [error] [client 192.168.1.2] Premature end of script headers: test.pl

bitte um HILFE

Gruß Erich
renee
 2007-12-12 20:04
#103802 #103802
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die Warnung wird *vor* dem Header ausgegeben... Du willst in der ersten Anweisung sicherlich eher so etwas: $www = $ENV{SERVER_PORT} and $ENV{'SERVER_PORT'} ne "" ? 1 : 0;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 10 Einträge, 1 Seite



View all threads created 2007-12-10 19:56.