PHP/Konfiguration

Aus Mikiwiki
< PHP
Wechseln zu: Navigation, Suche

Die Datei "php.ini"

Um PHP nutzen zu können, sin einige Einstellungen in der Konfigurationsdatei "php.ini" notwendig. Änderungen an dieser Datei sind normalerweise nicht möglich, wenn PHP auf dem Server eines Internetdienstanbieters genutzt wird.

Wenn PHP frisch installiert wurde, findet man im Installationsverzeichnis die Datei "php.ini-dist". Das ist die "Distributionsform" - die Rohform der Konfigurationsdatei. Diese Datei muss in "php.ini" umbenannt und im Pfad für PHP verfügbar gemacht werden. Unter Linux wird die Datei im aktuellen Arbeitsverzeichnis gesucht (z. B. "/etc/php"). Unter Ubuntu 8.04 ist die Datei unter "/etc/php5/apache2/php.ini" (bzw. "/etc/php5/cli/php.ini") zu finden. Die Position kann auch durch Belegung der Umgebungsvariable "PHPRC" festgelegt werden. Unter keinen Umständen sollten die Originaldatei verändert werden! Eine als "empfehlenswert" bezeichnete Form der Datei findet sich in der Datei "php.ini-recommended".

Die Funktion "phpinfo" zeigt die Konfiguration von PHP. Die Ausgabe entspricht den Einstellungen in der Datei "php.ini". Die Unterstützung für Datenbanken muss ausdrücklich freigegeben werden.

<?php phpinfo(); ?>

Der Aufbau der Datei "php.ini" entspricht üblichen Konfigurationsdateien. Mit einem Strichhpunkt beginnende Zeilen gelten als Kommentar und werden nicht beachtet. Abschnitte werden mit eckigen Klammern eingeleitet (z. B. "[Sektion]") - auch solche Gebilde werden nicht beachtet. Gross- und Kleinschreibung ist für die Schlüsselwörter relevant. Komplexe Werte werden in doppelte Anführungszeichen gesetzt, da PHP sonst nur das erste Wort einer Wortkette auswertet. Oft werden Funktionen mit einem der folgenden Schlüsselwörter aktiviert oder deaktiviert (wobei die Gross- und Kleinschreibung hier keine Rolle spielt):

  • On, Off, on off
  • Yes, No, yes, no
  • TRUE, FALSE, true, false
  • 1, 0

Die folgende Tabelle zeigt die einzelnen Abschnitte der Datei "php.ini" mit den möglichen Einstellungen. In der Spalte "Wert" findet sich ein Beispiel oder der voreingestellte Standardwert.

Option Wert Beschreibung
Sprachoptionen
engine On Aktiviert die Skriptengine unter Apache HTTP Server
zend.ze1_compatibility_mode Off Kann die Verarbeitung in einem Kompatibilitätsmodus zu PHP4 (Zend Engine 1) schalten. Meist läuft dann PHP5-typischer Code nicht mehr!
short_open_tag On Erlaubt kurze Tags: "<?" und "?>" statt "<?php" und "?>".
asp_tags Off Erlaubt ASP-Tags: "<%" und "%>" statt "<?php" und "?>".
precision 12 Genauigkeit, mit der Fliesskommazahlen verarbeitet werden.
y2k_compliance On Jahr 2000-Kompatibilität.
output_buffering Off Ausgabepufferung. Mit "On" ist das Senden von Headern auch nach der Ausgabe von Daten erlaubt.
output_handler Name einer Funktion, die zur Ausgabe der Seite aufgerufen wird.
zlib.output_compression Off Kompression des Ausgabestroms mit dem ZIP-Verfahren. Kann "Off", "On" oder Puffergrösse sein (Standardgrösse: 4KB).
zlib.output_handler Off Handlerprogramm, das die Kompression übernimmt (standardmässig auskommentiert).
implicit_flush Off Wenn "On", wird der Puffer nach jedem Block ausgegeben. Entspricht dem Aufruf der Funktion "flush()".
unserialize_callback_func Handlerfunktion zur Deserialisierung von Klassen.
allow_call_time_pass_reference On Erlaubt die Übergabe von Funktionsparametern per Referenz. Veraltet, da diese Angabe im Funktionskopf erfolgen muss (Operator "&").
expose_php On Steuerung der Ausgabe eines HTTP-Headers, der auf das Vorhandensein von PHP hinweist. Diese Angabe ist aus Sicherheitsgründen unkritisch. Wenn "On", so fügt PHP einen X-Header hinzu, der die Version anzeigt.
Sicherheitsoptionen
Die Standardeinstellungen sind nicht sicher. Internetdienstanbieter setzen "oft "safe_mode" auf "On", um ihre Server zu schützen. Deshalb gibt es einige Einschränkungen, wenn PHP im Webspace ausgeführt wird.
safe_mode Off "On" schaltet den sicheren Modus ein (Standard bei Internetdienstanbietern).
safe_mode_gid Off UID/GID-Prüfung beim Öffnen einer Datei (User versus Group).
safe_mode_include_dir <Pfad> Zwingende Pfadangabe zu include-Dateien, wenn der sichere Modus eingeschaltet ist.
safe_mode_exec_dir <Pfad> Erzwingt einVerzeichnis zur Ausführung, wenn der sichere Modus eingeschaltet ist.
safe_mode_allowed_env_vars PHP_ Erzwingt das angegebene Präfix vor Umgebungsvariablen, um den Zugriff aber nicht die Nutzbarkeit einzuschränken.
safe_mode_protected_env_vars LD_LIBRARY_PATH Kommagetrennte Liste von Umgebungsvariablen, die nicht verändert werden dürfen.
disable_functions Kommagetrennte Liste von Funktionsnamen, die nicht genutzt werden dürfen. Diese Einstellung funktioniert immer, gleichgültig ob der sichere Modus eingeschaltet ist oder nicht.
Farben für Syntaxhervorhebung
PHP erlaubt die Ausgabe von Code mit einer Hervorhebung von syntaktischen Einheiten. Die Ausgabe der Werte erfolgt in einem ""-Tag
highlight.string #DD0000 Zeichenketten
highlight.comment #FF8000 Kommentare
highlight.keyword ##007700 Schlüsselwörter
highlight.bg #FFFFFF Hintergrund
highlight.default #0000BB Alles andere
highlight.html #000000 HTML
Umgang mit Ressourcen
Diese Optionen betreffen die Gesamtleistung des Systems. Im sicheren Modus kann der in "max_execution_time" eingestellte Wert nicht per Funktion verändert werden.
max_execution_time 30 Maximale Ausführungszeit eines Skripts in Sekunden.
memory_limit 8M Maximaler Speicherverbrauch eines Skripts ("M" steht für MegaByte).
max_input_time 60 Zeit, die ein Skript zur Verarbeitung der empfangenen Daten maximal zur Verfügung hat.
Fehlerbehandlung
Verwendet werden folgende Konstanten, welche die Bit eines Bitfelds darstellen.
Konstante Beschreibung
E_ALL Alle Fehler und Warnungen.
E_ERROR Nur schwerwiegende Fehler.
E_WARNING Nur Warnungen.
E_PARSE Fehler des Compilers.
E_NOTICE Nachrichten, z. B. fehlende Deklarationen.
E_STRICT Zeigt Hinweise bei Code an, der nach den PHP5-Regeln optimiert werden könnte, ansonsten aber läuft.
E_CORE_ERROR Fehler in der Startphase.
E_CORE_WARNING Warnung in der Startphase.
E_COMPILE_ERROR Schwere Compilerfehler.
E_COMPILE_WARNING Compilerwarnungen.
E_USER_ERROR Benutzererzeugte Fehler.
E_USER_WARNING Benutzererzeugte Warnungen.
E_USER_NOTICE Benutzererzeugte Nachrichten.
error_reporting E_ALL & ~E_NOTICE Beispiel für den Einsatz der Konstanten: Alles ausser Nachrichten.
display_errors On Einschalten der Fehlerausgabe.
display_startup_errors Off Fehler beim Startup-Prozess.
log_errors Off Einschalten der Protokollierung von Fehlern.
log_errors_max_len 1024 Maximale Länge der protokollierten Fehlermeldung.
ignore_repeated_errors Off Wenn "On", werden wiederholende Fehler nicht protokolliert.
ignore_repeated_source Off Wenn "on", werden wiederholende Fehler nicht protokolliert und auch die Fehlerquelle ignoriert.
report_memleaks On Berichte über Speicherlecks.
track_errors Off Speichert die letzte Fehlermeldung in der Variablen "$php_errormsg".
html_errors Off Entfernt HTML aus Fehlermeldungen.
docref_root /phpmanual/ Verzweigt auf das PHP-Handbuch, um Hinweise aus Fehlermeldungen heraus anzuzeigen. Standardmässig auskommentiert.
docref_ext .html Legt die Erweiterung der Dateien des PHP-Handbuchs fest. Standardmässig auskommentiert.
error_prepend_string <zeichenkette> Zeichenkette, die vor jedem Fehler ausgegeben wird, z. B. "<font color=#ff0000>".
error_append_string <zeichenkette> Zeichenkette, die nach jedem Fehler ausgegeben wird, z. B. "</font>".
error_log <datei>
syslog
Angabe, wohin die Fehler protokolliert werden sollen. Kann ein Dateiname sein. Mit "syslog" kann auch der Typ der Systemprotokolldatei angegeben werden.
Datenverarbeitung
PHP erleichtert die Programmierung durch die Vorverarbeitung vieler Informationen, die zwischen Webserver und Webbrowser übertragen werden. Dieses Verhalten kann in einigen Fällen problematisch sein und muss deshalb bei Bedarf angepasst werden.
arg_separator.output & Zum Trennen von URL-Argumenten verwendeter Wert. Normalerweise deaktiviert; es wird dann ein einfaches "&"-Zeichen verwendet.
arg_separator.input ;& Zum Trennen von URL-Argumenten bei der Auswertung einer URL verwendeter Wert. Jedes Zeichen wird beachtet. Normalerweise deaktiviert; es wird dann ein einfaches "&"-Zeichen verwendet.
variables_order "EGPCS" Reihenfolge, in der externe Daten in globale Variablen überführt werden.
E Umgebung
G GET
P POST
C Cookies
S Server
register_globals Off Wenn "On" werden externe, registrierte Variablen global zur Verfügung gestellt, ansonsten nur in den "$HTTP_*_VARS[]"- bzw. "$_"-Arrays.
register_argc_argv On Wenn "On" werden Befehlszeilenargumente ausgewertet.
post_max_size 8M Maximaler Platz für Formulardaten und Dateiupload ("M" steht für MegaByte).
Automatisches Quoten und Markieren
Unter PHP können Sonderzeichen automatisch mit dem Fluchtzeichen (Escape_Zeichen) Backslash ("\") versehen werden, damit diese ihre Wirkung verlieren.
magic_quotes_gpc On Quoted (markiert Sonderzeichen) in "GET"-, "POST"- und Cookiedaten.
magic_quotes_runtime Off Quoted (markiert Sonderzeichen) in allen Zeichenketten.
magic_quotes_sybase Off Quoted (markiert Sonderzeichen) im Sybase-Format, also mit "'"-Zeichen anstatt "\"-Zeichen.
Ausführen von /Skripten/HTML vor und nach jedem Skript
Vor dem Starten eines Skripts und nach seiner Ausführung kann PHP einen besonderen Code ausführen. Hier wird der Name der Datei eingetragen, die ausführbaren Skriptcode enthält.
auto_prepend_file <datei> Ausführung vor jedem Skript.
auto_append_file <datei> Ausführung nach jedem Skript.
MIME-Type Header
Bei der Datenausgabe erzeugt PHP einen HTTP-Header, der auf den Seiteninhalt hinweist. Die beiden folgenden Optionen kennzeichnen die Attribute dieses Headers.
default_mimetype "text/html" Standard MIME-Type für den HTTP-Header.
default_charset "iso-8859-1" Einsetzen des Zeichensatz-Headers. Soll kein Header gesetzt werden, so wird die Zeile auskommentiert (Standard).
Pfade und Verzeichnisse
Bei der Ausführung können Pfade, in denen Skripte liegen, automatisch gefunden werden, wenn die folgenden Optionen konfiguriert sind. Standardmässig muss der vollständige virtuelle Pfad angegeben werden, wenn Funktionen Datei- oder Pfadangaben erwarten.
include_path <pfad> Pfad, in dem nach Dateien gesucht wird, z. B. "/pfad1:/pfad2".
doc_root <pfad> Stammpfad (kann leer bleiben).
user_dir <pfad> Aufrufe nach "/~Benutzername" landen in diesem Pfad.
extension_dir ./ Verzeichnis mit ladbaren Modulen.
enable_dl On Schaltet die Funktion "dl()" ein.
cgi.force_redirect 1 Ausschalten der CGI-Weiterleitung (1 = aus, 0 = ein).
cgi.redirect_status_env <variable> Eine Umgebungsvariable "", die der Webserver (nicht der Apache HTTP-Server) benötigen kann, um PHP zu finden.
Datei-Hochlade-Verhalten
PHP erlaubt auf sehr einfache Weise das Hochladen von Dateien. Die folgenden Optionen steuern dieses Verhalten. Es kann auch zur mit den entsprechenden Funktionen verändert werden.
file_uploads On Erlaubt das Hochladen von Dateien.
upload_tmp_dir <pfad> Temporäres Verzeichnis, in dem die Daten zwischengespeichert werden.
upload_max_filesize 2M Maximale Grösse für hochgeladene Dateien ("M" steht für MegaByte).
Wrapper für "fopen()"
Die PHP-Funktion "fopen" ermöglicht den Zugriff auf Dateien. Besondere Präfixe vor dem Dateinamen erlauben jedoch den Zugriff auf Dateien per HTTP oder FTP auf fremden Rechnern. Mit den folgenden Optionen lässt sich dieses Verhalten deaktivieren.
allow_url_fopen On Erlaubt Umleitungen für die Funktion "fopen", z. B. "http://" oder "ftp://".
from <mail> E-Mail-Adresse, die bei anonymen FTP-Zugriffen verwendet wird.
user_agent PHP Zur Authentifizierung verrwendeter Name des Clients.
default_socket_timeout 60 Zeit in Sekunden, die maximal auf die Verbindung gewartet wird.
auto_detect_line_endings Off Automatische Zeilenendeerkennung, wenn der Kommunikationspartner ein Macintosh-Rechner ist.

Einbinden von Modulen

PHP erlaubt das Einbinden von Modulen zur Laufzeit. Diese Funktion wird vor allem unter Windows verwendet, wo die Module als DLL vorliegen - darauf wird hier nicht eingegangen. Unter Linux ist es eher üblich, Module einzukompilieren. Als SO-Datei vorliegende Unix-Bibliotheken lassen sich aber auch einbinden, wenn sie für PHP übersetzt wurden.

PHP besteht aus einer Vielzahl einzelner Module. Die folgende Tabelle zeigt Einstellungen für verschiedene dieser Module. Die Module für FrontBase, Informix, Ingres II, mSQL, MSSQL, ODBC, PostgreSQL und Verisign Payflow Pro sowie weitere Module sind zwar vorhanden, auf ihrer Beschreibung habe ich mangels Interesse meinerseits jedoch verzichtet.

Option Wert Beschreibung
Modul "[Syslog]"
Diese Option aktiviert oder deaktiviert die Variablen, die Hinweise auf die Systemprotokolldatei enthalten. Die Werte können auch bei deaktivierter Option mit der Funktion "define_syslog_variables" ermittelt werden.
define_syslog_variables Off Setzt Systemvariablen, "Off" verbessert die Systemleistung.
Modul "[mail function]"
Die Mailfunktionen müssen nur unter Windows konfiguriert werden. Unter Linux nutzt PHP auf jeden Fall sendmail, das standardmässig installiert ist.
sendmail_path Pfad zu sendmail mit Parametern.
Modul "[Logging]"
Steuerung des Verhalten des Protokollmoduls, mit dem Fehlerzustände in Protokolldateien geschrieben werden.
logging.method db Speichermethode für Protokolldateien.
logging.directory <pfad> Pfad zu den Protokolldateien.
Modul "[Java]"
PHP erlaubt die Ausführung von Java-Code auf dem Server. Die Unterstützung für Java ist allerdings wenig ausgereift und schlecht dokumentiert.
java.class.path <zeichenkette> Pfad zu den Klassenbibliotheken.
java.home <zeichenkette> Stammverzeichnis.
java.library <zeichenkette> Die verwendete Java-Bibliothek.
java.library.path <zeichenkette> Pfad zu den externen Bibliotheken.
Modul "[SQL]"
Umgang mit Datenbankzugriffen.
sql.safe_mode Off Sicherer Modus für SQL.
Modul "[MySQL]"
MySQL ist nach wie vor die Standarddatenbank für PHP. Entsprechend umfangreich ist die Anzahl der Einstellungsmöglichkeiten. In den meisten Fällen sind die Angaben jedoch unnötig, weil diese Einstellungen bequemer vom Skript aus vorgenommen werden können oder bei aktiviertem sicherem Modus gar nicht erlaubt sind (betrifft "default_host", "default_user" und "default_pass").
mysql.allow_persistent On Erlaubt persistente Verbindungen.
mysql.max_persistent -1 Maximale Anzahl der persistenten Verbindungen; "-1" steht für eine unbegrenzte Anzahl.
mysql.max_links -1 Maximale Anzahl der Verbindungen (gleichgültig ob persistent oder nicht); "-1" steht für eine unbegrenzte Anzahl.
mysql.default_port <port> Standardport des MySQL-Servers.
mysql.default_socket <socket> Socket für den MySQL-Server (bleibt normalerweise leer).
mysql.default_host <host> Name des Rechners, auf dem der MySQL-Server läuft. Kann im sicheren Modus nicht verändert werden.
mysql.default_user <benutzer> Standardbenutzer des MySQL-Servers. Kann im sicheren Modus nicht verändert werden.
mysql.default_pass <passwort> Passwort des Standardbenutzers des MySQL-Servers. Kann im sicheren Modus nicht verändert werden.
Module "[Sybase]" und "[SybaseCT]"
Sybase ist eine kommerzielle Datenbank, die für viele Betriebssysteme verfügbar ist.
sybase.allow_persistent On Erlaubt persistente Verbindungen.
sybase.max_persistent -1 Maximale Anzahl der persistenten Verbindungen; "-1" steht für eine unbegrenzte Anzahl.
sybase.max_links -1 Maximale Anzahl der Verbindungen (gleichgültig ob persistent oder nicht); "-1" steht für eine unbegrenzte Anzahl.
sybase.interface_file <zeichenkette> Schnittstellendatei, z. B. "/opt/sybase/interfaces".
sybase.min_error_severity 10 Minimales Fehlerniveau zur Fehleranzeige.
sybase.min_message_severity 10 Minimales Nachrichtenniveau zur Fehleranzeige.
sybase.compatibility_mode Off Kompatibilitätsmodus für PHP3.
sybct.allow_persistent On Erlaubt persistente Verbindungen.
sybct.max_persistent -1 Maximale Anzahl der persistenten Verbindungen; "-1" steht für eine unbegrenzte Anzahl.
sybct.max_links -1 Maximale Anzahl der Verbindungen (gleichgültig ob persistent oder nicht); "-1" steht für eine unbegrenzte Anzahl.
sybct.min_error_severity 10 Minimales Fehlerniveau zur Fehleranzeige.
sybct.min_message_severity 10 Minimales Nachrichtenniveau zur Fehleranzeige.
Modul "[bcmath]"
Normalerweise werden Zahlenwerte im Rechner in binärer Form gespeichert, was allerdings in seltenen Fällen zu Rechenfehlern führt, weil der Wertebereich anders als bei dezimalen Zahlen ausgebildet ist. Werden Berechnungen mit hoher Genauigkeit benötigt, so hilft das bcmath-Modul, das intern mit dezimalen Zahlen rechnet.
bcmath.scale 0 Anzahl der Dezimalstellen bei "bc"-Funktionen. "0" steht für keine Vorgabe.
Modul "[browscap]"
Um zu erkennen, welche Funktion ein Webbrowser hat, wird eine Kennungsdatei verwendet, die für alle bekannten Browser entsprechende Angaben enthält. Dies sagt jedoch nichts darüber aus, ob der Benutzer diese Funktionen auch aktiviert hat.
browscap <datei> Pfad zur Webbrowserinformationsdatei.
Modul "[Session]"
Das Modul "Session" steuert die Verfolgung von Nutzern über mehrere Seiten hinweg. Das ist notwendig, weil HTTP selsbt statuslos arbeitet und die Verbindung nach der Auslieferung jeder Seite beendet.
session.save_handler files Art der Sitzungsspeicherung. "files" speichert die Sitzungen in Dateien. Kann auch "user" sein, dann sind aber eigene Funktionen erforderlich.
session.save_path <pfad> Pfad, wo die Sitzungssteuerung Dateien speichert (meist "/tmp").
session.use_cookies 1 Erlaubt Cookies.
session.name PHPSESSID Name der Sitzung, der als Cookiename oder "GET"-Parameter verwendet wird.
session.auto_start 0 Startet die Sitzung immer auch ohne Funktion "session_start".
session.cookie_lifetime 0 Lebensdauer des Cookies in Sekunden. "0" steht für Sitzungscookie.
session.cookie_path / Pfad für Cookie.
session.cookie_domain <domäne> Domäne für Cookie.
session.serialize_handler php Art der Serialisierung der Daten. "php" steht für interne Funktion.
session.gc_probability 1 Steuert die Häufigkeit des Aufräumprozesses. Sieh auch "session.gc_dividend".
session.gc_dividend 100 Dividend für den Parameter "session.gc_probability" 1/100 = 1% - in einem von 100 Aufrufen startet also der Garbage Collector.
session.gc_maxlifetime 1440 Zeit in Minuten, nach der temporäre Daten gelöscht werden.
session.referer_check 0 Prüft die Herkunft des Skripts.
session.entropy_length 0 Anzahl Byte, die maximal aus der Datei gelesen werden und die Länge der Sitzungs-ID ergeben. "0" steht für unbegrenzt.
session.entropy_file <datei> Datei, aus der Sitzungs-IDs erzeugt werden. Als Quelle für einen Zufallsgenerator kann bei Bedarf "/dev/urandom" angegeben werden.
session.cache_limiter nocache Lebensdauer des Saches im Webbrowser. Mögliche Werte: "nocache", "private" und "public".
session.cache_expire 180 Lebensdauer des Dokuments in Minuten.
session.use_trans_sid 1 Erlaubt transiente Übergabe der Sitzungs-ID, wenn mit "--enable-trans-sid" kompiliert wurde.
url_rewriter.tags <zeichenkette> Liste der Tags, die erweitert werden, um die Sitzungs-ID automatisch anzuhängen: "a=href, area=href, frame=src, input=src, form=fakeentry".
Modul "[Assertion]"
Zum Zweck der Fehlersuche kann eine Fehlerverfolgungsfunktion genutzt werden.
assert.active On Aktiviert die Funktion "assert()".
assert.warning On Gibt eine Warnung bei jeder misslungenen Prüfung aus.
assert.bail Off Lässt Alternative standardmässig nicht zu.
assert.callback 0 Funktion, die bei misslungener Prüfung aufgerufen wird.
assert.quiet_eval 0 Wenn "1" wird "error_reporting()" für die Zeit der Prüfung ausser Kraft gesetzt.
Modul "[Sockets]"
Beim Aufbau einer Verbindung per TCP/IP wird eine Kombination aus IP-Adresse und Port benutzt - ein sogenanntes Socket. Dieses kann vom Betriebssystem oder von PHP verwendet werden.
sockets.use_system_read On Wenn "on" wird der Systemaufruf "read" anstatt des mit PHP gelieferten genutzt.