Perl außerhalb cgi-bin

hi,

o… perl (*.pl) von cgi-bin aus irgendwohin zB ein verzeichnis höher hinschreiben lassen bzw auf dort gelegene datei.html dürfte völlig normal sein. (?)
geht das mit
print $myfilevar ‚…/datei.html‘
also mit üblichem pfadverweis …/ und so?
o… dann … muß ich die rechte für eine so von *.pl beschriebene datei auf 777 setzen, oder genügt 755, wenn zB besucher-formulare verarbeitet werden, dann ja indirekt quasi vom besucher geschrieben werden muß?

  • dann hab’ ich in meinen webhosting-einstellungen ‚ne option
    o… CGI/perl außerhalb cgi-bin". Das gilt wohl für *.pl ausführen, und nich‘ für *.html von perl außerhalb beschreiben lassen, oder?

also drei fragen :o}

danke schonmal
RoSowieso

sorry - korrektur

print $myfilevar ‚…/datei.html‘

soll heißen
my $myfilevar = ‚…/datei.html‘;
print $myfilevar ‚irgend Text‘;

und die 3.frage fängt eins höher an:
o…dann hab’ ich in meinen webhosting-einstellungen 'ne option
usw

Hallo,

o… perl (*.pl) von cgi-bin aus irgendwohin zB
ein verzeichnis höher hinschreiben lassen bzw auf dort
gelegene datei.html dürfte völlig normal sein. (?)
geht das mit
print $myfilevar ‚…/datei.html‘
also mit üblichem pfadverweis …/ und so?
o… dann … muß ich die rechte für eine so von
*.pl beschriebene datei auf 777 setzen, oder genügt 755, wenn
zB besucher-formulare verarbeitet werden, dann ja indirekt
quasi vom besucher geschrieben werden muß?

  • dann hab’ ich in meinen webhosting-einstellungen ‚ne option
    o… CGI/perl außerhalb cgi-bin". Das gilt wohl
    für *.pl ausführen, und nich‘ für *.html von perl außerhalb
    beschreiben lassen, oder?

Ich verstehe nur Bahnhof. Du solltest einfach
und klar schreiben, was Du vorhast - und nicht,
wie Du vermutest, was sein könnte oder nicht.

Nehmen wir mal an, Du hast folgende Struktur:

 ~{root} ---+---/cgi-bin/
 |
 +---/htdocs/

und hast eine Datei ‚datei.html‘ in ‚htdocs‘ sowie
ein Skript programm.pl in ‚cgi-bin‘, welches Du
mit http://meinserver.de/cgi-bin/programm.pl aufrufst?

Ist das so?

Wenn ja, erzeuge doch bitte mal ein Ausführbares
Skript in cgi-bin (meintest.pl) mit folgendem
Inhalt:#!/usr/bin/perl
use strict;
use warnings;
use CGI;

my $q = new CGI;
print $q->header,
$q->start_html,
$q->p( ‚path-info:‘ . $q->path_info() .’
’ ),
$q->p( ‚path-translated:‘ . $q->path_translated() . ’
’ ),
$q->end_html;und führe dies wie folgt(!) aus:

http://meinserver.de/cgi-bin/meintest.pl/datei.html

(das ist kein kein Tippfehler!) und poste bitte die Ausgabe hier.

Grüße

CMБ

bin ja auch verwirrt
hi,

hab ich gemacht (test upgeloadet und probiert auszuführen).
kommt noch premature end of script. error 500.
aber es geht bei meinem webhost bzw server immer 'ne weile, bis uploads auch verfügbar sind.

bin ja selbst etwas verwirrt.

von erstens:
habe in einem perl script u.a. die zeile
my $variable = ‚…/datei.html‘;
Meine Frage ist hier, ob diese relative Pfadangabe syntaktisch so richtig ist?

zweitens:
die rechte für dateien kann ich in einem nach koordinaten orientierten options-kasten wählen. Da kann ich jeweils „lesen“, „schreiben“ und „ausführen“ erlauben oder verbieten. Und zwar für „Benutzer“ (ich), „Gruppe“(?) und „Andere“.
Also drei x drei möglichkeiten. Alle 9 erlauben wird chmod 777.
Alle erlauben, bis auf „Gruppe/schreiben“ und „Andere/schreiben“ entspricht 755.

dann hab’ ich drittens:
die struktur

…meindomain.de/html
…meindomain.de/html/cgi-bin
index.html liegt in
…meindomain.de/html/index.html

was mich hier verwirrt hat ist - in meinem vom webhost angebotenen Einstellungen - die option:
„CGI/perl außerhalb cgi-bin“ aktiviert oder deaktiviert.
Da möchte ich gern ausschließen, daß ich diese option falsch einstelle, wenn ich mit Hilfe eines
…meindomain.de/html/cgi-bin/*.pl
eine *.html beschreiben lasse in
…meindomain.de/html/vonperlbeschriebenedatei.html
Also bestätigt haben, daß mit „außerhalb“ das Ausführen von CGI/perl-programmen gemeint ist, die NICHT im Verzeichnis cgi-bin liegen.
Und nicht das Beschreiben meiner datei
…meindomain.de/html/vonperlbeschriebenedatei.html

Ich knabbere nämlich zur Zeit an der Fehlermeldung:
error 500, premature end of script headers soundso.pl
und möchte, bevor ich perl-code ausprobiere, sicherstellen, daß es nicht an oben genannten Sachen/Fragen liegt, daß Fehlermeldungen kommen.

grüß
Christof Held

Hallo,

hab ich gemacht (test upgeloadet und probiert auszuführen).
kommt noch premature end of script. error 500.
aber es geht bei meinem webhost bzw server immer 'ne weile,
bis uploads auch verfügbar sind.

Sind die Rechte ‚755‘ ?

Hast Du’s abgetippt oder Copy/Paste gemacht?

von erstens:
habe in einem perl script u.a. die zeile
my $variable = ‚…/datei.html‘;
Meine Frage ist hier, ob diese relative Pfadangabe syntaktisch
so richtig ist?

Um das rauszukriegen sollst Du ja die
Umgebungsvariable $ENV{PATH_TRANSLATED}
ausgeben - mit print $q->path_translated()
*Das* wäre dann der korrekte Pfad.

zweitens:
die rechte für dateien kann ich in einem nach koordinaten
orientierten options-kasten wählen. Da kann ich jeweils
„lesen“, „schreiben“ und „ausführen“ erlauben oder verbieten.
Und zwar für „Benutzer“ (ich), „Gruppe“(?) und „Andere“.
Also drei x drei möglichkeiten. Alle 9 erlauben wird chmod
777.
Alle erlauben, bis auf „Gruppe/schreiben“ und
„Andere/schreiben“ entspricht 755.

755 ist o.k., wenn der Serverprozess/das Skript unter
Deiner ID läuft, dann bezieht sich die 7 auf den
Serverprozess, also auf Dein Programm.

dann hab’ ich drittens:
die struktur
…meindomain.de/html
…meindomain.de/html/cgi-bin
index.html liegt in
…meindomain.de/html/index.html

was mich hier verwirrt hat ist - in meinem vom webhost
angebotenen Einstellungen - die option:
„CGI/perl außerhalb cgi-bin“ aktiviert oder deaktiviert.
Da möchte ich gern ausschließen, daß ich diese option falsch
einstelle, wenn ich mit Hilfe eines
…meindomain.de/html/cgi-bin/*.pl
eine *.html beschreiben lasse in
…meindomain.de/html/vonperlbeschriebenedatei.html
Also bestätigt haben, daß mit „außerhalb“ das Ausführen von
CGI/perl-programmen gemeint ist, die NICHT im Verzeichnis
cgi-bin liegen. Und nicht das Beschreiben meiner datei
…meindomain.de/html/vonperlbeschriebenedatei.html

Um das rauszukriegen solltest Du mein Programm
von vorhin laufen lassen.

Ich knabbere nämlich zur Zeit an der Fehlermeldung:
error 500, premature end of script headers soundso.pl
und möchte, bevor ich perl-code ausprobiere, sicherstellen,
daß es nicht an oben genannten Sachen/Fragen liegt, daß
Fehlermeldungen kommen.

versuch mal folgendes (leicht modifiziertes) Skript:use strict;
use warnings;
use CGI;
use CGI::Carp;

my $q = new CGI;
print $q->header,
$q->start_html,
$q->p( ‚path-info:‘ . $q->path_info() .’
’ ),
$q->p( ‚path-translated:‘ . $q->path_translated() . ’
’ ),
$q->end_html;

ohne Änderungen zu erstellen/auszführen (chmod 755)
und poste bitte die komplette Fehlermeldung.

Grüße

CMБ


hi,

Sind die Rechte ‚755‘ ?

alle rechte beteiligter dateien sind 755; meindomain/fluxdat.html (die zu beschreibende datei) 777.

Hast Du’s abgetippt oder Copy/Paste gemacht?

c&p, aber alle zeilen sauber getrennt und verglichen mit Deinem posting.

Um das rauszukriegen sollst Du ja die
Umgebungsvariable $ENV{PATH_TRANSLATED}
ausgeben - mit print $q->path_translated()
*Das* wäre dann der korrekte Pfad.

kommt immer noch error 500, premature [usw]
Eigentlich meinte ich genauer, ob solche Pfadangaben in perl überhaupt möglich sind, wie man es aus html und javascript usw gewohnt is’. Das bestätigt Deine Gegenfrage ja schon.
Dann stimmt meine Pfadangabe, denn meindomain.de/fluxdat.html liegt neben dem verzeichnis meindomain.de/cgi-bin/.

755 ist o.k., wenn der Serverprozess/das Skript unter
Deiner ID läuft, dann bezieht sich die 7 auf den
Serverprozess, also auf Dein Programm.

Das meinte ich.
Genau da hatte ich mich davon irritieren lassen, daß ja der Besucher, wenn er *.pl ausführt (genügt 755), indirekt bewirkt, daß fluxdat.html beschrieben wird (vermutete 777 wär’ da nötig).
Das versteh’ ich dann jetzt auch besser.

versuch mal folgendes (leicht modifiziertes)
Skript:

[…]
ohne Änderungen zu erstellen/auszführen (chmod 755)

und poste bitte die komplette Fehlermeldung.

versuch’ ich jetzt.

thk
chh

c&p ausgabe pfade-test
Dein erstes script hat jetzt was ausgespuckt - mea culpa! - hatte vergessen die Rechte der test.pl auf 755 neu einzustellen :o[[
aber, ich habe die datei fluxdat.html zweimal. Einmal, wo sie ursprünglich war, in
meindomain.de/cgi-bin/fluxdat.html.
Diese ist aber in meinem html-javascript-perl-Konstrukt nicht mehr verlinkt.
Sondern - wie beschrieben - die jetzige Kopie in
meindomain.de/fluxdat.html.
Würde sagen, daß die unten richtig gefunden wurde.

Ausgabe:

path-info:/fluxdat.html

path-translated:/var/www/vhosts/web472/html/fluxdat.html

Ende Ausgabe.

(Denke, die zweite test-script Version, hat sich damit erledigt … schau ich aber grad’ nochmal)

mfg
chh

OJEH!
Oje.

Jetzt hab’ ich grade festgestellt, daß mein domain/index.html noch kein 755 hatte … :open_mouth:|
Und dort, in einem iframe, spielt sich letzlich die ganze Sache ab.
Das muß es jetzt sein.
Dachte, das hätt’ ich längst erledigt.

Vielen Dank Dir, daß Du Dich meiner Irren und Wirren angenommen hast!
Das hat mir sehr geholfen, auch zu sehen, wie Dein script erst ohne die richtigen Rechte dieselbe Fehlermeldung lieferte, wie ich sie die ganze Zeit hatte, dann mit richtigen Rechten die Pfade ausgespuckt hat.
Sonst wär’ ich nie auf die Idee gekommen, index.html nochmal zu kontrollieren.
tsk! … wie sich ein error in Luft auflösen kann!?
Hab’ halt auch langsam schon 'ne ziemliche Matschbirne vom ganzen Programmier-Chinesisch und dem Drumrum.

Also Danke und gute Nacht!
Christof Held