Home : Dokumentation : 1.3.6 Dokumentation : HTML::Embperl
Google Web perl.apache.org

 
Home
 
Features
 
Einführung
 
Dokumentation
 
README
 
README.v2
 
Konfiguration
 
Embperl
 
Embperl::Object
 
Embperl::Form::Validate
 
Embperl::Syntax
 
Embperl::Recipe
 
Embperl::Mail
 
1.3.6 Dokumentation
 
HTML::Embperl
 
HTML::EmbperlObject
 
HTML::Embperl::Mail
 
HTML::Embperl::Session
 
Tips & Tricks
 
FAQ
 
DBIx::Recordset
 
Installation
 
Download
 
Support
 
Änderungen
 
Wiki
 
Weitere Infos
 
Hinzufügen Infos
 
Login

    Stable 2.4.0
    Beta 2.5.0_3
Unterstützen Sie Embperl! Mehr...
Runtime Konfiguration
[ << Prev: Aufrufen/Konfigurieren von Embperl ] [ Content ] [ Next: Syntax >> ]

Die Runtimekonfiguration wird mittels Umgebungsvariablen eingestellt, entweder auf der Befehlszeile oder in der Webserverkonfigurationsdatei. Die meisten HTTP Server verstehen

SetEnv <var> <wert>

Wenn Sie Apache und mod_perl nutzen, funktioniert auch

PerlSetEnv <var> <wert>

Der Vorteil von PerlSetEnv gegenüber SetEnv ist, daß unterschiedliche Werte für verschiedene Verzeichnisse oder virtuelle Hosts gesetzt werden kann.



EMBPERL_FILESMATCHtop

Wenn vorhanden, werden von Embperl nur Dateien bearbeitet, die der angegebenen Perl regular expression entsprechen. Alle anderen Dateien werden an den Standard Apachehandler weitergereicht. Dies ist nütztlich, um Embperl Dokumente und Nicht-Embperl Dokumente (z.B. Gifs) in einem Verzeichnis abzulegen. EMBPERL_FILESMATCH funktioniert nur unter mod_perl. Beispiel: # Nur Dateien mit der Endung .htm werden von Embperl bearbeitet PerlSetEnv EMBPERL_FILESMATCH \.htm$



EMBPERL_ALLOW (ab 1.2b10)top

Wenn vorhanden, werden von Embperl nur Dateien bearbeitet, die der angegebenen Perl regular expression entsprechen. Die Bearbeitung anderer Dateien wird mit dem Fehlercode FORBIDDEN verweigert. Dies ist vorallem in CGI Mode nützlich, um die Serversicherheit zu erhöhen.



EMBPERL_PATH (ab 1.3b6)top

Hier kann eine durch Semikolon (unter Unix auch Doppelpunkte) getrennte Liste von Verzeichnissen angegeben werden, die Embperl durchsucht, wenn eine Datei verabeitet werden soll und der Dateiname keine absolute Pfadangabe enthält und nicht mit ./ (bzw. .\ unter Windows) anfängt. Verzeichnisse müssen mit einem Slash (/ bzw. \) abgeschlossen werden, andernfalls wird der Teil als Dateiprefix interpretiert. Eine spezielle Behandlung findet statt, wenn der Dateiname mit ../ (bzw. ..\) beginnt. Dann wird die selbe Anzahl Elemente wie ../ im Dateinamen sind im Pfad übersprungen.



EMBPERL_COMPARTMENTtop

Gibt dem Namen des Compartments für die Opcodemaske an. (Siehe (Sichere-)Namensräume und Opcode Restriktionen für Details.)



EMBPERL_ESCMODEtop

Gibt den Anfangswert für $escmode an (siehe unten).



EMBPERL_LOGtop

Pfad für die Embperl Logdatei. Diese enthält Informationen darüber, wie Embperl den eingebetteten Perlcode ausführt. Wieviele Informationen geschrieben werden hängt von der Einstellung der Debugflags ab (siehe EMBPERL_DEBUG). Default ist /tmp/embperl.log.

HINWEIS: Unter mod_perl muß EMBPERL_LOG mittels PerlSetEnv gesetzt werden, damit es schon bei Serverstart wahrgenommen wird.



EMBPERL_PACKAGEtop

Name des Packages in dem der Code ausgeführt wird. Wenn kein Package angegeben ist, erzeugt Embperl für jede Datei einen eindeutigen Packagenamen. Dies verhindert, dass globale Variablen zweier Skripts miteinander in Konflikt geraten.



EMBPERL_VIRTLOGtop

Gibt eine URI an, unter der die Embperl Logdatei mittels des Browsers abgerufen werden kann. Dieses Feature ist gesperrt, wenn EMBPERL_VIRTLOG nicht gesetzt ist. Siehe auch EMBPERL_DEBUG und dbgLogLink für ein Beispiel, wie dies in Webserverkonfiguration eingestellt werden kann.



EMBPERL_OPTIONStop

Diese Bitmaske gibt diverse Optionen für die Ausführung von Embperl an. Damit können bestimmte Features von Embperl gesperrt oder freigegeben sowie das Verhalten von Embperl beeinfluß werden. Um mehrere Optionen anzugeben sind die Werte zu addieren.

 

optDisableVarCleanup = 1

 

Cleanup wird nicht nach jedem Request ausgeführt.

 

optDisableEmbperlErrorPage = 2

 

Führt dazu, dass Embperl im Fehlerfall nicht seine eigene Fehlerseite anzeigt, sondern so viel wie möglich der Seite. Fehler werden lediglich in die Logdatei geschrieben. Ohne diese Option sendet Embperl seine eigne Fehlerseite, die alle Fehler, die aufgetreten sind, anzeigt. Wenn dbgLogLink gesetzt ist,werden alle Fehler als Links auf die Logdatei dargestellt. Diese Option hat keinen Effekt, wenn optReturnError gesetzt ist.

 

optReturnError = 262144

 

Wenn diese Option gesetzt ist, sendet Embperl keine Fehlerseite, sondern liefert den Fehlercode an Apache oder das aufrufende Programm zurück. Unter Apache ermöglicht dies die ErrorDocument Anweisung zu benutzen, um eine eigene Fehlerseite anzuzeigen. Innerhalb des ErrorDokuments ist es möglich die Embperlfehlermeldungen mittels

  $errors = $req_rec -> prev -> pnotes('EMBPERL_ERRORS') ;

zu ermitteln, wobei $errors eine Arrayreferenz ist. (1.3b5+)

 

optShowBacktrace = 0x8000000

 

Wenn gesetzt wird bei der Ausgabe von Fehlermeldungen zusätzlich eine Liste aller Dateien ausgegeben diese die aktulle Sourcedatei aufgerufen haben.

 

optSafeNamespace = 4

 

Veranlasst Embperl den Code in einem sicheren Namensraum auszuführen. Dadurch ist es nicht mehr möglich auf Daten außerhalb des Packages zuzugreifen. (Siehe (Sichere-)Namensräume und Opcode Restriktionen für Details.)

 

optOpcodeMask = 8

 

Veranlasst Embperl eine Operator Maske anzuwenden. Dadurch ist es möglich, bestimmte, unsichere, Opcodes zu sperren. (Siehe (Sichere-)Namensräume und Opcode Restriktionen für Details.)

 

optRawInput = 16

 

Veranlasst Embperl den Quellentext unangetastet zu lassen, lediglich Return-Zeichen werden entfernt, da Perl 5.004 dies nicht akzeptiert. Diese Option sollte aufjeden Fall gesetzt werden, wenn Sie Ihren Quellentext mit einem Ascii Editor schreiben.

Wenn Sie jedoch einen (WYSIWYG) HTML-Editor benutzen, welcher unerwünschte HTML Tags in den Perlcode einfügt und spezielle Zeichen HTML-Kodiert (z.B. '<' als &lt;), dann sollten Sie diese Option nicht setzen. Embperl konvertiert dann das HTML automatisch in den Perlcode zurück, wie Sie ihn im Editor eingegeben haben.

 

optEarlyHttpHeader = 64

 

Normalerweise werden die HTTP Header von Embperl gesendet, nachdem der Request bearbeitet wurde. Dies ermöglicht, während der Bearbeitung des Dokuments beliebige Header zu setzen und Embperl kann den Content-Length Header berechnen. Außerdem erzeugt Embperl eine Fehlerseite, statt des Dokuments, falls Fehler auftreten. Um dies zu erreichen, wird die Ausgabe zwischengespeichert bis der Request abgearbeitet wurde, dann werden zuerst die HTTP Header und danach das Dokument gesendet. Dieses Flag führt dazu, das die Header sofort, vor der Ausführung des Dokuments, gesendet werden und die Ausgabe nicht gepuffert ist.

 

optDisableChdir = 128

 

Ohne diese Option setzt Embperl das aktuelle Verzeichnis entsprechend dem Verzeichnis, in dem das ausgeführte Skript steht. Dies ermöglicht es innerhalb der Embperlseite relative Pfadnamen zu benutzen. Da der Verzeichniswechsel, u.U. einige Zeit in Anspruch nimmt, kann er mit dieser Option verhindert werden.

 

optDisableFormData = 256

 

Diese Option verhindert das Setzen von %fdat und @Z<>ffld. Embperl ignoriert die gesendeten Formulardaten vollständig.

 

optDisableHtmlScan = 512

 

Wenn gesetzt, verhindet diese Option das Bearbeiten aller HTML Tags vollständig. Embperl sucht dann nur noch nach <[+/-/!/$ ... $/!/-/+]> Blöcken. Dies schaltet dynamische Tabellen, Formularbearbeitung usw. ab.

 

optDisableInputScan = 1024

 

Verhindert die Bearbeitung aller Eingabe Tags. (<INPUT><TEXTAREA><OPTION>)

 

optDisableTableScan = 2048

 

Verhindert die Bearbeitung aller Tabellen Tags. (<TABLE><TH><TR><TD><MENU><OL><UL>)

 

optDisableSelectScan = 8388608 (0x800000) (ab 1.3b7)

 

Verhindert die Bearbeitung aller SELECT Tags. (<SELECT>)

 

optDisableMetaScan = 4096

 

Verhindert die Bearbeitung aller Meta Tags. (<META HTTP-EQUIV>)

 

optAllFormData = 8192

 

Diese Option veranlasst Embperl all Formularfelder in %fdat und @ffld einzufügen, auch wenn sie leer sind. Leere Formularfelder werden als leere Zeichenkette eingefügt. Ohne diese Option werden leere Formularfelder nicht zu %fdat und @Z<>ffld hinzufügt.

 

optRedirectStdout = 16384

 

Leitet die Standardausgabe vor jedem Request auf dem Embperlausgabestrom um und setzt sie anschließend zurück. Wenn die Option gesetzt ist kann das normale Perl print benutzt werden, um Ausgaben vorzunehmen. Ansonsten sind Ausgaben nur mittels eines [+ ... +] Blocks oder durch Ausgeben auf die Dateihandle OUT möglich.

 

optUndefToEmptyValue = 32768

 

Normalerweise, wenn Embperl für ein Eingabefeld keinen Wert in %fdat findet, läßt es das HTML Tag unverändert. Mit dieser Option behandelt Embperl das Feld so, als wäre eine leere Zeichenkette in %fdat für dieses Feld, d.h. wenn kein VALUE Attribut vorhanden ist fügt Embperl ein VALUE="" ein.

 

optNoHiddenEmptyValue = 65536 (ab 1.2b2)

 

Mit dieser Option erzeugt Embperl beim Hidden Metacommand keine Hidden-Felder für leere Zeichenketten.

 

optAllowZeroFilesize = 131072 (ab 1.2b2)

 

Dokumente der Dateilänge Null führen normalerweise zu einem Fehler "NOT_FOUND (404)". Mit dieser Option liefert Embperl ein leeres Dokument zurück.

 

optKeepSrcInMemory = 524288 (ab 1.2b5)

 

Veranlasst Embperl den Quellencode des Dokuments im Speicher zuhalten. (Der compilierte Perlcode wird immer im Speicher gehalten, unabhänig von diesem Flag).

 

optKeepSpaces = 1048576 (ab 1.2b5) = 0x100000,

 

Verhindert das Entfernen von Leerzeilen und Zwischenräumen. Dies ist sinnvoll für Nicht-HTML-Dokumente.

 

optOpenLogEarly = 2097152 (ab 1.2b5)

 

Diese Option veranlaßt Embperl die Logdatei zu öffnen, sobald es geladen wird. Dies kann genutzt werden, wenn Embperl unter mod_perl mittels PerlModule geladen wird, um die Logdatei als root, statt des nicht-privilegierter Benutzers, zu öffnen.

 

optUncloseWarn = 4194304 (ab 1.2b6)

 

Verhindert das Embperl eine Warnung über nicht abgeschlossene if, while, table, etc. am Dateiende ausgibt.



EMBPERL_DEBUGtop

Diese Bitmaske gibt an, welche Informationen in die Logdatei geschrieben werden. Um mehrere Optionen anzugeben sind die Werte zu addieren.

 

dbgStd = 1

 

Minimale Informationen.

 

dbgMem = 2

 

Speicherverwaltung.

 

dbgEval = 4

 

Zeigt den Code und das Resultat beim Ausführen von Perl.

 

dbgCmd = 8

 

Schreibt alle Metacommands und HTML Tags, die ausgeführt werden, in die Logdatei.

 

dbgEnv = 16,

 

Listet alle Umgebungsvariablen.

 

dbgForm = 32

 

Listet die an das Dokument gesandten Formulardaten.

 

dbgTab = 64

 

Zeigt die Bearbeitung von dynamischen Tabellen.

 

dbgInput = 128

 

Zeigt die Bearbeitung von Eingabefeldern.

 

dbgFlushOutput = 256

 

Führt ein flush nach jeder Ausgabe aus. Dies dient lediglich zum Debuggen von Abstürzen und führt normalerweise zu einer deutlichen Verlangsamung der Ausgabe.

 

dbgFlushLog = 512

 

Führt ein flush nach jedem Schreiben in die Logdatei aus. Dies dient lediglich zum Debuggen von Abstürzen und führt normalerweise zu einer deutlichen Verlangsamung der Verarbeitung.

 

dbgAllCmds = 1024

 

Schreibt alle Metacommands und HTML Tags in die Logdatei, unabhänig davon ob sie ausgeführt werden oder nicht. Ein '+' kennzeichnet dabei, dass Embperl diesen Befehl ausführt.

 

dbgSource = 2048

 

Schreibt jeweils den nächsten Teil des Quellencodes in die Logdatei, der ausgeführt wird. (Dadurch kann die Logdatei recht umfangreich werden)

 

dbgFunc = 4096

 

Diese Option ist nur verfügbar, wenn Embperl mit -DEPDEBUGALL übersetzt wurde. Wenn gesetzt, werden alle Embperl internen Funktionsaufrufe in die Logdatei geschrieben. Dient dem Debuggen von Embperl selbst.

 

dbgLogLink = 8192

 

Fügt oben auf jeder Seite einen Link ein, der dazu benutzt werden kann, die Logdatei für diesen Request anzuzeigen. Siehe auch EMBPERL_VIRTLOG.

 Beispiel:

    SetEnv EMBPERL_DEBUG 10477
    SetEnv EMBPERL_VIRTLOG /embperl/log

    <Location /embperl/log>
    SetHandler perl-script
    PerlHandler HTML::Embperl
    Options ExecCGI
    </Location>
 

dbgDefEval = 16384

 

Erzeugt jedesmal einen Eintrag in der Logdatei, wenn neuer Perlcode übersetzt wird.

 

dbgHeadersIn = 262144

 

Schreibt alle HTTP Header in die Logdatei.

 

dbgShowCleanup = 524288

 

Gibt jede Variable, sowie deren Wert, die am Ende des Request "aufgeräumt" wird, aus.

 

dbgProfile = 1048576 (ab 1.2b4)

 

Wenn gesetzt, wird für jede Quellencodezeile die Zeit, seit dem Start des Requests, ausgegeben. (dbgSource muß ebenfalls gesetzt sein)

 

dbgSession = 2097152 (ab 1.2b4)

 

Empfangen und Senden von Session cookies wird geloggt.

 

dbgImport = 4194304 (ab 1.2b5)

 

Zeigt, wie Funktionen in andere Packages importiert werden.

Ein guter Wert für den Anfang ist 2285 oder 10477. Letzteres ermöglicht das Anzeigen der Logdatei via Browser (EMBPERL_VIRTLOG muß ebenfalls gesetzt sein.)



EMBPERL_INPUT_FUNCtop

Diese Konfigurationsanweisung ermöglicht, statt den Quellentext aus einer Datei zu lesen (oder ihn einem Skalar zu entnehmen), die angegebene Funktion aufzurufen, welche für das Bereitstellen des Quellentextes verantwortlich ist. Die Funktion muß folgendermaßen aussehen:

 InputFunc ($r, $in, $cacheargs, weitere Parameter...) ;
 

$r

 

Apache Request Record (siehe perldoc Apache)

 

$in

 

eine Referenz auf einen Skalar, in welchen der Quellentext abgelegt werden soll.

 Beispiel:

 open F, "filename" ;
 local $/ = undef ;
 $$in = <F> ;
 close F ;
 

$cacheargs

 

eine Referenz auf einen Skalar, welcher den Zeitpunkt der letzten Änderungen zurück liefern soll, alternativ kann (ab 1.2.1) eine Hashreferenz mit den Elementen mtime und inputfile angegeben werden, um das korrekte cachen des vorcompilierten Perlcodes zu ermöglichen.

 Beispiel:

 $$cacheargs = -M "filename" ;

 oder

 $$cacheargs = { mtime => -M "filename", inputfile => "filename" }  ;

Es können weitere Parameter (Kommasepariert) in EMBPERL_INPUT_FUNC angegeben werden, welche dann an die Funktion durchgereicht werden.

  Beispiel:

  PerlSetEnv EMBPERL_INPUT_FUNC "InputFunc, foo, bar"

  wird zu folgendem Funktionsaufruf

  InputFunc ($r, $in, $mtime, 'foo', 'bar') ;

Beispiel für eine Funktion, die das gleiche macht wie Embperl:

 sub Input

    {
    my ($r, $in, $mtime) = @_ ;

    open F, $r -> filename or return NOT_FOUND ;
    local $\ = undef ;
    $$in = <F> ;
    close F ;

    $$mtime = -M $r -> filename ;
    
    return 0 ;
    }

Siehe auch ProxyInput, für eine Funktion die von Embperl bereit gestellt wird.

HINWEIS: Es gibt weiterhin zwei Module (HTML::EmbperlChain und Apache::EmbperlFilter) die die Möglichkeit bieten Embperl und andere Module zu verketten.



EMBPERL_OUTPUT_FUNCtop

Diese Konfigurationsvariable erlaubt das Angeben einer Funktion, die die Ausgabe erledigt. Die Funktion muß folgende Form haben:

 OutputFunc ($r, $out, weitere Parameter...) ;
 

$r

 

Apache Request Record (siehe perldoc Apache)

 

$out

 

Referenz auf einen Skalar, welcher die Ausgabe von Embperl enthält.

Es können weitere Parameter (Kommasepariert) in EMBPERL_INPUT_FUNC angegeben werden, welche dann an die Funktion durchgereicht werden.

  Beispiel:

  PerlSetEnv EMBPERL_OUTPUT_FUNC "OutputFunc, foo, bar"

  wird zu folgendem Funktionsaufruf

  OutputFunc ($r, $out, 'foo', 'bar') ;

Beispiel für eine Funktion, die das gleiche macht wie Embperl:

 sub Output

    {
    my ($r, $out) = @_ ;

    $r -> send_http_header ;

    $r -> print ($$out) ;

    return 0 ;
    }

Siehe auch LogOutput, für eine Funktion die von Embperl bereit gestellt wird.

HINWEIS: Es gibt weiterhin zwei Module (HTML::EmbperlChain und Apache::EmbperlFilter) die die Möglichkeit bieten Embperl und andere Module zu verketten.



EMBPERL_MAILHOSTtop

Gibt den Rechner an, der von der MailFormTo Funktion als SMTP Server genutzt wird. Default ist localhost.



EMBPERL_MAILHELO (ab 1.3b4)top

Gibt den Rechner/die Domain an, der von der MailFormTo Funktion im HELO/EHLO Befehl angegeben wird. Normalerweise setzt Net::SMTP einen sinnvollen Defaultwert ein. In Abhänigkeit von der Installation kann es jedoch manchmal nötig sein diesen Wert von Hand zu setzen.



EMBPERL_MAILFROM (ab 1.2.1)top

Gibt die Absender EMail-Adresse an die von der MailFormTo Funktion genutzt wird. Default ist www-server@server_name.



EMBPERL_MAILDEBUG (ab 1.2.1)top

Debugeinstellung für Net::SMTP. Default ist 0.



EMBPERL_MAIL_ERRORS_TO (ab 1.2b6)top

Wenn hier eine E-Mail Adresse angegeben ist, wird beim Auftreten eines Fehlers, ein E-Mail mit den Fehlermeldungen an diese Adresse versandt.



EMBPERL_SESSION_CLASSEStop

Hier wird, durch Leerzeichen getrennt, die Klasse für Object Store und Lock Manager (und optional für die Serialisierung und das Generieren der ID) von Apache::Session angegeben (siehe Session Handling)



EMBPERL_SESSION_ARGStop

Liste von zusätzlichen Parametern für Apache::Session Klassen (Leerzeichen getrennt) (siehe Session Handling). Argumente die Leerzeichnen enthalten, müssen in Anführungszeichen geschriebene werden. Beispiel:

  PerlSetEnv EMBPERL_SESSION_ARGS "DataSource=dbi:mysql:session UserName=www 'Password=secret word'"


EMBPERL_SESSION_HANDLER_CLASS (ab 1.3b3)top

Bestimmt die Klasse die das Session Handling für Embperl durchführt. Default war bis 1.3.3 HTML::Embperl::Session. Ab 1.3.4 ist der Default Apache::SessionX. Um das alte Sessionhandling zu verwenden, können Sie den Parameter auf HTML::Embperl::Session setzen. Sie können eine eigene Klasse von Apache::SessionX ableiten und diese hier angeben um Ihr eigenes Session Handling zu implementieren.



EMBPERL_COOKIE_NAME (ab 1.2b4)top

Gibt den Namen des Cookies an, das Embperl benutzt, um die Session Id zu senden. Default ist EMBPERL_UID.



EMBPERL_COOKIE_DOMAIN (ab 1.2b4)top

Gibt die Domain des Cookies an, das Embperl benutzt, um die Session Id zu senden. Default ist keine Domain.



EMBPERL_COOKIE_PATH (ab 1.2b4)top

Gibt den Pfad des Cookies an, das Embperl benutzt, um die Session Id zu senden. Default ist kein Pfad.



EMBPERL_COOKIE_EXPIRES (ab 1.2b4)top

Gibt den Ablaufzeitpunkt des Cookies an, das Embperl benutzt, um die Session Id zu senden. Es kann ein vollständiges Datum oder (ab 1.3b5) relative Werte angegeben werden. Beispiele: +30s +10m +1h -1d +3M +10y Default ist kein Ablaufzeitpunkt.


[ << Prev: Aufrufen/Konfigurieren von Embperl ] [ Content ] [ Next: Syntax >> ]

© 1997-2012 Gerald Richter / ecos gmbh