Ich   Entwicklung   Lösungen Apache PHP mySQL  
 

Resource Limits

Hier können Sie entscheiden, wieviel CPU-Zeit und wieviel Speichern ein PHP-Skript nutzen darf.

max_execution_time

Anfänger

max_execution_time = 30     ; Maximum execution time of each script, in seconds

Hier stellen Sie ein, nach wieviel Sekunden die Ausführung eines Skriptes abbricht.

Zusatzinfo

Während bei mir zu Hause ein Skript wirklich nur die angegebene Zeit läuft und dann mit einem fatalen Fehler abbricht, ist das bei dem Provider, bei dem diese Webseite gehostet ist anders. Hier scheint nicht die wirklich verstrichene Zeit, sondern die CPU-Zeit begrenz zu werden.

Die CPU-Zeit ist praktisch die Zeit, die Ihr Skript die CPU voll beansprucht. Ein Skript kann dann bei einer max_execution_time von einer Sekunde auch wesentlich länger laufen, wenn es die CPU nicht voll beansprucht.

Ein Beispiel zur Verdeutlichung: ich habe ein Skript geschrieben, was einfach Zahlen hochzählt und ausgibt; die Zeit ist auf eine Sekunde begrenzt. Bei mir zu Hause läuft es exakt eine Sekunde. Hier läuft es länger (aber keine 90 Sekunden, was die max_execution_time meines Providers ist).

Beispiel-Skript

Zum Testen starten Sie dieses Skript: max_execution_time.php. Sehen Sie sich auch den Quelltext der Datei an, um sie zu verstehen: max_execution_time_source.php.

max_input_time

Anfänger

max_input_time = 60	; Maximum amount of time each script may spend parsing request data

Gibt an, wie viele Sekunden ein Skript Request-Daten verarbeiten darf. Request-Daten sind Daten, die dem Skript beispielsweise per Formular (POST/GET) oder URL (GET) übergeben werden.

memory_limit

Anfänger

memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)

Die hier angegebenen 8 mb maximaler Speicherverbrauch sind im Normalfall mehr als ausreichend. Sie werden äußerst selten in die Lage kommen, mehr Speicher zu benötigen (mein Provider hat memory_limit trotzdem großzügig auf 50 mb gesetzt).

Zusatzinfo

Ich habe noch nicht herausgefunden, ob es an Windows, am Apache 2 oder am noch experimentellen PHP-Modul für den Apache 2 liegt, aber bei mir zu Hause beachteten meine Skripte kein memory limit. Bei meinem Provider funktioniert es wunderbar. Sie können es ja auch einmal bei sich zu Hause ausprobieren. Ich habe dazu ein Skript geschrieben, das memory_limit auf ein Megabyte setzt und eine Zeichenkette in einer Schleife immer an sich selbst hängt (und damit bei jedem Schleifendurchlauf seine Länge verdoppelt). Vorsichtshalber ist das Skript auf 25 Durchläufe begrenzt (also eine maximale Zeichenlänge von 2^24 Zeichen).

Beispiel-Skript

Zum Testen starten Sie dieses Skript: memory_limit.php. Sehen Sie sich auch den Quelltext der Datei an, um sie zu verstehen: memory_limit_source.php.

Error handling and logging

Anfänger Anfänger sollten den gesamten Abschnitt lesen!

Das Error handling ist wichtiger, als Sie vielleicht denken. Sie sollten sich damit befassen, denn sowohl während der Entwicklung, als auch später im Einsatz, können Fehlermeldungen hilfreich sein, oder eben unangebracht.

error_reporting

Anfänger

; error_reporting is a bit-field.  Or each number up to get desired error
; reporting level
; E_ALL             - All errors and warnings
; E_ERROR           - fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it's automatically initialized to an
;                     empty string)
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
;
; Examples:
;
;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors
;
error_reporting  =  E_ALL

Hier können Sie einstellen, welche Fehler überhaupt behandelt werden. Zur Entwicklungszeit ist E_ALL auf jeden Fall die richtige Wahl! Es werden auch kleinste Warnungen angezeigt, was SIe zu sauberem Programmieren zwingt!

Später, wenn sich Ihr Skript online im Einsatz befindet, ist E_ALL & ~E_NOTICE vielleicht die bessere Wahl, das hängt aber auch von den folgenden Einstellungen ab.

E_WARNING und E_NOTICE führen übrigens nicht zum Abbruch eines Skriptes, während das Auftreten eines E_ERROR das Skript sofort (an der Stelle des Fehlers) beendet. Ein E_PARSE kann sogar dafür sorgen, dass das Skript gar nicht ausgeführt wird.

display_errors

Anfänger

; Print out errors (as a part of the output).  For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below).  Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = Off

Zur Entwicklungszeit sollten Sie display_errors auf On setzen, damit Fehlermeldungen direkt am Bildschirm ausgegeben werden. Später, wenn Ihr Skript im Einsatz ist, ist es vielleicht klüger, wieder die Einstellung Off zu wählen, damit die Besucher einer Webseite keine unschönen Fehlermeldungen zu Gesicht bekommen. Stattdessen sollten Sie eventuell auftretende Fehler im Skript abfangen.

Zusatzinfo

Beispiel: das folgende Skript versucht eine Mail zu verschicken. Bei Scheitern wird eine benutzerdefinierte Fehlermeldung ausgegeben. Die Standard-PHP-Fehlermeldung ist dann unnötig.

if(mail("jb@intermitto.net", "Test", "Dies ist ein Hefler")) {
	echo "Mail wurde erfolgreich verschickt.";
} else {
	echo "Fehler! Mail konnte nicht verschickt werden!";
}

display_startup_errors

; Even when display_errors is on, errors that occur during PHP's startup
; sequence are not displayed.  It's strongly recommended to keep
; display_startup_errors off, except for when debugging.
display_startup_errors = Off

Normalerweise sollten keine startup errors auftreten, Sie können diese Einstellung so belassen.

log_errors

Anfänger

; Log errors into a log file (server-specific log, stderr, or error_log (below))
; As stated above, you're strongly advised to use error logging in place of
; error displaying on production web sites.
log_errors = On

Während der Entwicklungsphase sollten Sie diese Einstellungen vielleicht auf Off stellen und Fehler stattdessen auf dem Bildschirm anzeigen lassen (siehe oben). Spätestens, wenn sich Ihr Skript im Einsatz befindet, sollten Sie aber von der Bildschirm-Anzeige umsteigen auf das Loggen in eine Datei. Dadurch bekommen Ihre Besucher die häßlichen Fehlermeldungen nicht zu sehen, Sie können sie aber in einer Logdatei nachsehen.

log_errors_max_len

; Set maximum length of log_errors. In error_log information about the source is
; added. The default is 1024 and 0 allows to not apply any maximum length at all.
log_errors_max_len = 1024

1024 sollte ausreichend sein, belassen Sie es dabei. Falls Sie später merken sollten, dass es doch nicht reicht, können Sie es immer noch hochsetzen.

ignore_repeated_errors und ignore_repeated_source

Anfänger

; Do not log repeated messages. Repeated errors must occur in same file on same
; line until ignore_repeated_source is set true.
ignore_repeated_errors = Off

Oft passiert mehrere male hintereinander exakt der selbe Fehler. Stellen Sie ignore_repeated_errors auf On, damit Wiederholungen ein und desselben Fehlers nicht mehr geloggt werden.

; Ignore source of message when ignoring repeated messages. When this setting
; is On you will not log errors with repeated messages from different files or
; sourcelines.
ignore_repeated_source = Off

Diese Einstellung wirkt sich nur aus, wenn Sie ignore_repeated_errors aktiviert haben. Falls Sie ignore_repeated_source auf On stellen, werden Fehler auch dann ignoriert, wenn Sie an verschiedenen Stellen in einem Skript auftauchen.

report_memleaks

; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This has only effect in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
report_memleaks = On

Neuere Einstellung, für ich ich keine Einsatzmöglichkeit sehe. Lassen Sie sie auf On.

track_errors

; Store the last error/warning message in $php_errormsg (boolean).
track_errors = Off

Wenn Sie diese Einstellung auf On setzen, steht Ihrem Skript eine Variable $php_errormsg zur Verfügung, in der die letzte Fehlermeldung gespeichert ist.

html_errors

Anfänger

; Disable the inclusion of HTML tags in error messages.
;html_errors = Off

Standard ist On. Der Deutlichkeit halber sollten Sie vielleicht das Semikolon entfernen und On angeben, wenn Sie möchten, dass die Bildschirm-Fehlermeldungen HTML benutzen. Das führt dazu, dass wichtige Teile der Fehlermeldung fett geschrieben sind etc.

Außerdem werden bei einigen Fehlermeldungen Hyperlinks zur PHP-Online-Dokumentation auf php.net angezeigt, wo man als Entwickler noch einmal nachsehen kann, was man denn falsch gemacht hat.

docref_root und docref_ext

Anfänger

; If html_errors is set On PHP produces clickable error messages that direct
; to a page describing the error or function causing the error in detail.
; You can download a copy of the PHP manual from http://www.php.net/docs.php
; and change docref_root to the base URL of your local copy including the
; leading '/'. You must also specify the file extension being used including
; the dot.
;docref_root = /phpmanual/
;docref_ext = .html

Wenn Sie die Möglichkeit der Hyperlinks zur Dokumentation gerne nutzen würden, aber nicht immer online sind, können Sie die Dokumentation auch herunterladen und PHP hier anweisen, die auf Ihrer Festplatte befindliche Dokumentation zu verwenden. Dies kann auch sinnvoll sein, da online standardmäßig die englische Dokumentation angezeigt wird, während Sie offline die Deutsche installieren können.

Wählen Sie dazu auf http://www.php.net/download-docs.php unbedingt in der Spalte Many HTML files die Dokumentation in der Sprache Ihrer Wahl. Die Dokumentation ist mit tar und bzip2 gepackt. Tools zum Entpacken finden Sie auf meiner Download-Seite.

error_prepend_string und error_append_string

Anfänger

; String to output before an error message.
;error_prepend_string = "<font color=ff0000>"
; String to output after an error message.
;error_append_string = "</font>"

Sie können hier HTML-Elemente angeben, deren Inhalt die Fehlermeldung sein soll. Das angegebene Beispiel schließt die Fehlermeldung in ein fehlerhaftes font-Element ein, Sie sollten valides HTML nutzen und etwas angeben wie:

error_prepend_string = "<span style='color:#f00;'>"
error_append_string = "</span>"

Mit diesem Beispiel werden Fehlermeldungen in roter Farbe angezeigt.

error_log

Anfänger

; Log errors to specified file.
;error_log = filename

Wenn Sie hier keine Datei angeben, aber log_errors auf On eingestellt haben und das PHP-Modul für den Apache benutzen, werden die Fehler standardmäßig in das Fehlerlog des Apache eingetragen. Um Fehler des Apache und PHP-Fehler besser auseinander halten zu können, sollten Sie hier vielleicht eine eigene Logdatei für PHP angeben.

; Log errors to syslog (Event Log on NT, not valid in Windows 95).
;error_log = syslog

Wenn Sie das Semikolon vor dieser Zeile entfernen, werden PHP-Fehler in das Ereignisprotokoll von Windows NT/2000/XP/.NET eingetragen. Unter Windows 95/98/Me hat diese Einstellung keine Auswirkungen, da diese Betriebssysteme über kein Ereignisprotokoll verfügen.

Data Handling, Paths and Directories weiter

URL: www.intermitto.net/php/konfig/handling/
© 2004-05 Jens Becker - intermitto.net v5.1
Letzte Änderung: 23.08.2005

Home - Kontaktformular - Downloads - Suche und Sitemap - Impressum
Entwicklung - Problemlösungen - Tutorials: Apache PHP mySQL

user  pass