Die Konfigurationsdatei php.ini

Datei  php.ini, Funktion  get_cfg_var()

Die Konfiguration der Programmiersprache PHP lässt sich auf mehreren Ebenen genau an die jeweilige Anwendung anpassen. Neben einer fixen Grund-Konfiguration ist auch die Live-Änderung zur Ausführungs-Zeit möglich.
PHP-Umgebung Test von PHP, der Konfiguration und der Umgebung
Konfiguration Eigene Methoden mit unterschiedlicher Reichweite
php.ini Die PHP-Konfigurations-Datei
get_cfg_var() Funktion liefert alle Einstellungen der Konfigurations-Datei
php_value Individuelle Konfiguration für PHP als Apache-Modul
PHPRC Individuelle Konfiguration für PHP als CGI-Programm
ini_get() Funktion liefert die Konfiguration des laufenden Scripts
ini_set() Funktion ändert die Konfiguration des laufenden Scripts
Verwandte Themen Installation und Konfiguration von PHP auf Windows

Konfiguration von PHP

Die Konfiguration der Programmiersprache PHP kann auf mehreren Ebenen mit unterschiedlicher Reichweite erfolgen.

Das ist in der Praxis sehr angenehm, für AnfängerInnen jedoch zunächst verwirrend. In der Regel ist PHP jedoch unmittelbar nach Installation so konfiguriert, dass alle einfachen Script-Programme problemlos laufen.

Die einfachste Methode, um umfassend Auskunft über die PHP Konfiguration zu erhalten, ist die Funktion phpinfo(INFO_CONFIGURATION)
Das Verhalten von PHP lässt sich individuell steuern:
Je nach Anwendungs-Gebiet der PHP-Programme (Webserver, Konsolen-Programm): ↓ Kapitel php.ini
Individuell für jeden Kunden eines Web-Providers:
↓ Kapitel PHPRC
Individuell für jedes einzelne PHP Script-Programm oder für einen Abschnitt innerhalb eines Programms: ↓ Kapitel ini_set

php.ini

Am eigenen (Server)-PC

Die Text-Datei php.ini steuert die gesamte (Grund)-Konfiguration von PHP.
Die Datei liegt normalerweise auf diesen oder ähnlichen Pfaden (Linux, Windows):
/etc/php.ini
/etc/php5/apache2/php.ini
C:\Programme\php\php.ini
C:\WINDOWS\php.ini
Tipp: Erzeugen sie im → Apache-(Webserver)-Verzeichnis einen SoftLink (Alias, Verknüpfung) zu dieser Datei. Man muss von dort öfters in der php.ini nachsehen.

Diese Datei kann auf einer Webseite nicht direkt angezeigt werden, weil der Webserver auf dieses Verzeichnis keine Zugriffsrechte haben sollte.

Der Pfad zur Konfigurationsdatei (am Webserver !) lässt sich mit der PHP-Funktion get_cfg_var ausgeben.
Live--Ergebnis:
get_cfg_var('cfg_file_path') = /etc/php5/apache2/php.ini

Am Webserver des Providers

Falls sie keinen Zugang zu einem Webserver haben, besorgen sie sich eine Download-Version von php.ini von der PHP-Homepage:

Die PHP-Installation enthält ein gut kommentiertes Muster der Datei (meist unter dem Namen php.ini-dist )

Auch als Kunde eines Web-Providers haben sie die Möglichkeit, PHP in weiten Grenzen zu konfigurieren.
Der Provider hat zu diesem Zweck eine eigene → Umgebungs-Variable PHPRC definiert. Sie laden eine private Version der Datei php.ini an den von PHPRC angegbenen Pfad in ihrem Web-Verzeichnis.
Tipp: Erzeugen sie vor jeder Änderung der Konfiguration eine Sicherungskopie, z.B. php_ini.bak

Überschreiben oder löschen sie niemals die Original-Einstellung, sondern schalten sie diese mit einem ; Strichpunkt (Kommentar-Zeichen) am Zeilen-Beginn ab und schreiben sie ihre geänderte Einstellung in die nächste Zeile.
Die Original Konfigurationsdatei ist gut kommentiert.
Zusätzliche Informationen finden sie im Internet.

Schalten sie am eigenen PC oder Server alle Variablen ab, vor denen (deprecated, auslaufend) im Kommentar gewarnt wird. Am Server ihres Providers sind diese Variablen ebenfalls abgeschaltet, ab PHP Version 6 nicht mehr verfügbar !

PHP-Funktion   get_cfg_var()   zeigt die Einstellung der Konfiguration

Diese PHP-Funktion liefert sämtliche einstellbare Variablen der Datei php.ini und damit die Standard-Konfiguration für alle PHP-Scripts auf diesem Server.
Ein leeres Resultat bedeutet normalerweise 'abgeschaltet'.
Wenn zahlreiche Resultate scheinbar fehlen, dann sind vermutlich (in der Datei php.ini) die Zugangsrechte dafür eingeschränkt worden.
Details zum Thema PHP-Fehler.
Syntax (Grammatik): get_cfg_var($name);
Sowohl der Name der Variablen als auch ihr aktueller Wert werden als String übergeben.
Eine genaue Beschreibung der einzelnen Variablen, ihrer Einstellung und ihrer Wirkung finden sie im Internet, auf der PHP-Homepage sowie in der ausgezeichnet kommentierten Datei selbst.
Nachfolgend einige ausgewählte Live-Beispiele:
Sicherheit:
Hinweis: Die gesamte Option safe_mode ist wahrscheinlich in PHP Version>=6 nicht mehr enthalten !
get_cfg_var('safe_mode') =
get_cfg_var('safe_mode_allowed_env_vars') = PHP_
get_cfg_var('safe_mode_protected_env_vars') = LD_LIBRARY_PATH
get_cfg_var('disable_functions') = exec, shell_exec, shell, system, passthru, popen, pclose, proc_open,
  proc_nice, proc_close, phpinfo, show_source, symlink, escapeshellcmd,
  escapeshellarg, ini_restore
get_cfg_var('disable_classes') =
get_cfg_var('expose_php') =
Pfade:
get_cfg_var('cfg_file_path') = /etc/php5/apache2/php.ini
get_cfg_var('extension_dir') =
get_cfg_var('error_log') =
get_cfg_var('upload_tmp_dir') =
URLs:
get_cfg_var('allow_url_fopen') =
get_cfg_var('default_socket_timeout') = 60
Java:
get_cfg_var('java.class.path') =
get_cfg_var('java.home') =
Resourcen:
get_cfg_var('max_execution_time') = 30
get_cfg_var('max_input_time') = 60
get_cfg_var('memory_limit') = 64M
SQL:
get_cfg_var('sql.safe_mode') =
get_cfg_var('mysql.allow_persistent') = 1
get_cfg_var('mysql.connect_timeout') = 60
Fehlerbehandlung:   (Details)
get_cfg_var('error_reporting') = 22519
get_cfg_var('display_errors') = 1
get_cfg_var('log_errors') =
get_cfg_var('error_log') =
get_cfg_var('ignore_repeated_errors') =
get_cfg_var('track_errors') =
Übergabe von Argumenten an PHP:
get_cfg_var('variables_order') = EGPCS
get_cfg_var('register_globals') =
get_cfg_var('register_argc_argv') = 1
get_cfg_var('magic_quotes_gpc') =
get_cfg_var('default_mimetype') = text/html
Dateien:
get_cfg_var('cgi.force_redirect') =
get_cfg_var('file_uploads') = 1
get_cfg_var('upload_max_filesize') = 8M
Session:
get_cfg_var('session.save_handler') = files
get_cfg_var('session.use_cookies') = 1
get_cfg_var('session.name') = PHPSESSID
get_cfg_var('session.gc_maxlifetime') = 1440
get_cfg_var('session.cache_expire') = 180
Tipp: Bei der Einstellung (↑ Sicherheit) von safe_mode=On oder safe_mode=1 ist der Datei-Zugriff mit Angabe relativer Pfade verboten.
Beispiele:
include('lib.php');
show_source('demo.php');
Verwenden sie für kritische Anweisungen (z.B.include(), show-source(), ...prinzipiell nur absolute Pfade.
Beispiel:
show_source('/srv/www/htdocs/demo.php');

PHP-Funktion ini_get

Diese PHP-Funktion liefert die individuelle Konfiguration des laufenden PHP-Scripts. Da man unter bestimmten Bedingungen diese Einstellung ändern kann (↓ Funktion ini_set() ), kann sich das Ergebnis dieser Funktion von jenem der ↑ Funktion get_cfg_var() unterscheiden. Syntax (Grammatik): ini_get($name);
Sowohl der Name der Variablen als auch ihr aktueller Wert werden als String übergeben. Die Namen sind die gleichen wie in der Datei php.ini und in der Funktion get_cfg_var() verwendet.
Beispiel:
Die Ausführungszeit ('Rechenzeit') für ein PHP-Script ist zur Sicherheit (u.a. gegen endlose Schleifen) begrenzt, meist auf 60 Sekunden.
Das Beispiel zeigt Live die Änderung dieser Konfigurations-Variablen: Sie gilt temporär nur für dieses Script-Programm und ändert die globale Konfiguration von PHP nicht !
Live--Änderung der Konfiguration:
get_cfg_var('max_execution_time') = 30
ini_get('max_execution_time') = 30
ini_set('max_execution_time','33');
ini_get('max_execution_time') = 33
get_cfg_var('max_execution_time') = 30

PHP-Funktion ini_set

Diese Funktion dient zur Änderung der Konfiguration (nur) für ein einzelnes Script-Programm.

Syntax (Grammatik)

ini_set($name,$value);
Sowohl der Name der Variablen als auch ihr neuer Wert werden als String übergeben.
Ein Beispiel finden sie im Kapitel zur ↑ Funktion ini_get()

Diese Funktion sollten sie nur in Ausnahmefällen verwenden.
Viele Argumente sprechen dagegen:

Fast jedes Problem dieser Art lässt sich wesentlich besser durch geschickte Programmierung lösen - Das hat meist auch noch den Vorteil größerer Sicherheit.
Fehler in fremden Programmen kann man damit manchmal kompensieren - aber nicht beseitigen !
Wenn die Konfiguration am eigenen Server geändert werden muss, dann erfolgt das besser (zentral, übersichtlich) durch Änderung in der Konfigurations-Datei php.ini

Falls sie ihr Web bei einem Provider betreiben, dann sollte ihr eigener Webserver möglichst ähnlich konfiguriert sein, sonst laufen ihre Script-Programme nur lokal und nicht im Internet.
In diesem Fall kommt die Konfiguration mit ↑ PHPRC in Betracht.

Die Funktion ini_set() ist bei den meisten Providern abgeschaltet. Sie kann daher bestenfalls am eigenen Webserver verwendet werden.

Die Wirkung der Funktion ini_set() ist auf ein einziges PHP Script-Programm begrenzt.
Letzte Änderung dieser Seite: 2012-02-08 23:32:47