Schrift
[thread]6588[/thread]

Kompatibilitätsprüfung für ein CGI: ...Erst prüfen, dann installieren



<< >> 10 Einträge, 1 Seite
cbxk1xg
 2004-12-20 21:24
#50214 #50214
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe mir überlegt eine Art Testscript für mein CMS zum download anzubieten. Der potenzielle Interessent könnnte dann überprüfen, ob sein Server mit diesem Skript überhaupt arbeiten kann.

Das Testscript sollte bestimmte Vorrausetzungen des Servers überprüfen. Also z.B. ob bestimmte Perl-Module überhaupt vorhanden sind, oder ob (das wäre fast noch wichtiger) mod_rewrite installiert ist.

Ich stelle mir das so vor, dass am Ende eine HTML-Seite ausgegeben wird mit grünen Häkchen und roten "X-en". Also so eine Art idiotensichere, leicht verständliche Liste.


Hier nun die eigentliche Frage. Wie kann ich überprüfen ob eine bestimmtes Perl-Modul installiert ist? Und wie kann ich mit einem Perl-Script überprüfen ob mod_rewrite installiert, bzw. aktiviert ist?
lichtkind
 2004-12-20 21:51
#50215 #50215
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
es gibt sicher ne saubere lösung aber im moment fällt mir nur ein :
unter eval geschützt use Perl::Modul; aurufen und dann unter $@ nachsehen ob es vehlermeldung gab ich würde mit use Modul version zusätzlich die versionen checken es könnte ja sein das veraltete versionen deinen cms trotzdem absürzen lassen.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
sri
 2004-12-20 21:51
#50216 #50216
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
eval "use Foo::Bar" or warn "Foo::Bar geht nich";
cbxk1xg
 2004-12-20 22:49
#50217 #50217
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Also der folgende Code erzeugt bei mir eine perltypische Fehlermeldung.

Code: (dl )
1
2
3
4
eval "use Foo::Bar" or warn "Foo::Bar geht nich";
print "Content-type: text/html\n\n";
print "$@";
exit;


Fehlermeldung:
Can't locate Foo/Bar.pm in @INC (@INC
contains: /usr/local/lib/perl/5.6.1 /usr/local/share/perl/5.6.1 /
usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.6.1 /usr/share/perl/
5.6.1 /usr/local/lib/site_perl) at (eval 1) line 2. BEGIN failed--
compilation aborted at (eval 1) line 2.

Das ist aber irgendwie wenig hilfreich. Könnte man nicht so etwas wie einen negativen Rückgabewert liefern? Also sowas wie:
Code: (dl )
eval "use Foo::Bar" or $Modul_FooBar = 0;
\n\n

<!--EDIT|cbxk1xg|1103577677-->
Dubu
 2004-12-20 23:55
#50218 #50218
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Aeh ... den Rueckgabewert bekommst du doch genau von deinem eval()!?

Wenn du natuerlich die Warnung vor dem HTTP-Header ausgeben laesst, kannst du nicht erwarten, sie zu sehen. Und die "perltypische Fehlermeldung" druckst du ja selber mit print $@ aus (die Anfuehrungszeichen sind ueberfluessig), dafuer kannst du auch nicht Perl verantwortlich machen. ;)
cbxk1xg
 2004-12-21 00:13
#50219 #50219
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
[quote=Dubu,20.12.2004, 22:55]Wenn du natuerlich die Warnung vor dem HTTP-Header ausgeben laesst, kannst du nicht erwarten, sie zu sehen.[/quote]
Aua! Danke. Immer diese Anfängerfehler. *kopfschüttel*

Ich hab's jetzt so gelöst:
Code: (dl )
1
2
3
4
5
my $Status = "";
print "Content-type: text/html\n\n";
eval "use Foo::Bar" or $Status = "Foo::Bar geht nich";
print "Status = $Status";
exit;
Crian
 2004-12-21 10:47
#50220 #50220
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Code: (dl )
print "Content-type: text/html\n\nStatus = ", (eval "use Foo::Bar" ? "OK" : "Failed"), "\n";
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Dubu
 2004-12-21 15:36
#50221 #50221
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@Crian: Die Ausgabe ist einwandfrei nicht text/html sondern text/plain. Spart auch noch ein Zeichen, wenn du schon golfen musst. ;)
Crian
 2004-12-21 16:07
#50222 #50222
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Mir gings da nicht ums golfen, sondern um Übersichtlichkeit. Den ausgegebenen Header hab ich nicht verändert =)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Dubu
 2004-12-22 10:00
#50223 #50223
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Stimmt. Hiermit ein virtueller Rundumschlag an alle, die falshce Content-Type-Header herausschicken. :D
<< >> 10 Einträge, 1 Seite



View all threads created 2004-12-20 21:24.