Schrift
[thread]311[/thread]

CGI-Skripte auf Linux-Servern: Verzeich.wechsel auf cgi-bin nach Aufruf



<< >> 9 Einträge, 1 Seite
[E|B]
 2004-06-30 18:32
#2986 #2986
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Quote
An welcher Stelle im CGI-Skript sollte ich chdir(); verwenden?


Na dort, wo das Script eigentlich falsch ist! Wo sonst?!
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2004-07-01 02:47
#2987 #2987
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich denke nicht das chdir eine tolle lösung ist...

aber wenn du uns die quellen des gb zeigst, kann man wohl mehr sagen!
format_c
 2004-07-02 03:40
#2988 #2988
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Schau dir mal das Modul FindBin
Das hat eine Variable was dir den Absolutenpfad deines Scriptes wiedergibt woran du dann den relativen pfadn zumTemplate dranhängen kannst:
Code: (dl )
1
2
use FindBin;
my $template = $FindBin::Bin . '/data/template.tmpl';


Ich muss dir noch abraten was nicht CGI ist in cgi-bin abzulegen.
1. Gehört sich das nicht
2. Ruft jemand eine Datei in diesem Verzeichniszweig auf was kein CGI ist gibts nen 500 (Internal Server Error) --> unschön.
Dann mach das data-Verz. eher eine Ebene drunter:
Code: (dl )
1
2
use FindBin;
my $template = $FindBin::Bin . '/../data/template.tmpl';



Gruß Alex
Gast Gast
 2004-06-30 17:06
#2989 #2989
Hallo Forum,

mein Problem ist folgendes. Versuche eine Gästebuch einzubauen mittels CGI-Skript (im Ordner -> /cgi-bin), welches auf Templates zugreift (./data) im Ordner cgi-bin.
Nach dem Aufruf wird die Seite aufgebaut mittels Templates. Das aktuelle Verzeichnis ist dann cgi-bin und die realtiven Pfade in dem Template stimmen dann nicht mehr. Statt der relativen Pfade habe ich absulute verwendet und alles war ok. Nur wenn ich in der Navigation auf ein verlinktes Button gehe, zeigt mir der Statusbalken an, dass ich mich im CGI-Bin-Ordner befinde.
Wie kann ich CGI-Skripte ausführen im CGI-Bin-Ordner, ohne daß das CGI-Skript in den CGI-Bin-Ordner springt?
An welcher Stelle im CGI-Skript sollte ich chdir(); verwenden?
BungeeBug
 2004-07-01 01:58
#2990 #2990
User since
2004-03-16
54 Artikel
BenutzerIn
[default_avatar]
Hi,

villeicht gibst du und mal einen Link auf die Quelldatei ( NICHT das GB ) so, dass wir mal gucken können :)
MfG
BungeeBug
renee
 2004-07-02 00:25
#2991 #2991
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn das Template nur für das GB verwendet wird, würde ich die Pfade im Template anpassen. Die müssen dann so sein, als würdest Du vom cgi-bin - Verzeichnis aus verlinken!
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/
Crian
 2004-07-02 16:33
#2992 #2992
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Das gehört wohl mehr ins CGI-Forum... *schieb*
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
ptk
 2004-07-02 19:21
#2993 #2993
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=format_c,02.07.2004, 01:40]2. Ruft jemand eine Datei in diesem Verzeichniszweig auf was kein CGI ist gibts nen 500 (Internal Server Error) --> unschön.[/quote]
Naja, das ist ja kein Grund. Wenn man eine nicht-existente Datei im cgi-Verzeichnis aufruft, bekommt man auch einen Fehler...
Strat
 2004-07-03 00:35
#2994 #2994
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
chdir finde ich haesslich, weil das script von zu vielen aeusseren umstaenden abhaengig ist (server, ...)

eine IMHO bessere alternative ist, die Pfade relativ zu setzen und mit dem Modul CPAN:FindBin in absolute umwandeln zu lassen, z.B.

Code: (dl )
1
2
3
use FindBin;
# z.B. anstelle von ./templates/test.tmpl
my $file = "$FindBin::Bin/templates/test.templ";

$FindBin::Bin gibt den absoluten Pfad zum ausgefuehrten Script an, und zwar auch dann, wenn das script aus einem beliebigen verzeichnis ausgefuehrt wird

[edit]ups, format_c war schneller[/edit]\n\n

<!--EDIT|Strat|1088800538-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 9 Einträge, 1 Seite



View all threads created 2004-06-30 18:32.