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.
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.
Gibt dem Namen des Compartments für die Opcodemaske an.
(Siehe (Sichere-)Namensräume und Opcode Restriktionen für Details.)
Gibt den Anfangswert für $escmode an (siehe unten).
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.
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.
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.
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 <), 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. |  |
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.)
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.
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.
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_CLASSES | top |
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)
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.
|
|