15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
01.11.2024

Konfigurieren der php.ini-Datei: Ein vollständiger Leitfaden zur Optimierung von PHP auf Ihrem Server

Die php.ini Datei ist die Master-Konfigurationsdatei für PHP — das Rückgrat von fast jeder modernen Webanwendung. Egal ob Sie WordPress, Laravel, Magento oder eine benutzerdefinierte Anwendung ausführen, das Verständnis für die korrekte Konfiguration von php.ini kann die Leistung Ihres Servers dramatisch verbessern, die Sicherheit erhöhen und eine nahtlose Kompatibilität mit Ihrem Software-Stack gewährleisten.

Dieser umfassende Leitfaden führt Sie durch alles, was Sie wissen müssen: Was php.ini tut, wie man es findet, wie man es sicher bearbeitet und wie man überprüft, dass Ihre Änderungen korrekt funktionieren.

Inhaltsverzeichnis

  1. Was ist php.ini und warum ist es wichtig?
  2. Lokalisierung der php.ini Datei
  3. Bearbeitung der php.ini Datei
  4. Wichtige php.ini Direktiven erklärt
  5. Neustart Ihres Webservers
  6. Überprüfung Ihrer Änderungen
  7. Fortgeschrittene php.ini Optimierungstipps
  8. Sicherheitshärtung über php.ini
  9. Häufige php.ini Fehler, die zu vermeiden sind
  10. Fazit

1. Was ist php.ini und warum ist es wichtig? {#what-is-phpini}

Die php.ini Datei ist eine Nur-Text-Konfigurationsdatei, die PHP jedes Mal liest, wenn es initialisiert wird. Sie enthält Hunderte von Direktiven — Schlüssel-Wert-Paare, die praktisch jeden Aspekt des PHP-Laufzeitverhaltens steuern, einschließlich:

  • Speicherzuweisung für Skripte
  • Datei-Upload-Limits und POST-Datengröße
  • Fehlerberichterstattung Ebenen und Protokollierung
  • Sitzungsverwaltung Einstellungen
  • Erweiterungsladung (z. B. PDO, cURL, OPcache)
  • Sicherheitsbeschränkungen wie disable_functions und open_basedir
  • Ausführungszeitlimits um unkontrollierte Skripte zu verhindern

Diese Einstellungen richtig zu konfigurieren ist nicht nur eine Frage der Bequemlichkeit — es wirkt sich direkt auf die Stabilität Ihrer Anwendung, Ihren Sicherheitsstatus und die Benutzererfahrung aus. Falsch konfigurierte PHP-Einstellungen sind eine häufige Ursache für Anwendungsfehler, fehlgeschlagene Datei-Uploads, Speichererschöpfungsfehler und ausnutzbare Sicherheitslücken.

Wenn Sie Ihre PHP-Anwendungen auf einem VPS Hosting Plan hosten, haben Sie vollständigen Root-Zugriff, um php.ini frei zu ändern — was Ihnen vollständige Kontrolle über Ihre PHP-Umgebung gibt.

2. Lokalisierung der php.ini Datei {#locating-phpini}

Der Speicherort von php.ini variiert je nach Ihrem Betriebssystem, PHP-Version und der verwendeten Server API (SAPI) (Apache mod_php, PHP-FPM oder CLI). Hier sind drei zuverlässige Methoden, um sie zu finden.

Methode 1: Verwendung der Befehlszeile (Schnellste Methode)

Öffnen Sie Ihr Terminal oder verbinden Sie sich über SSH und führen Sie aus:

php --ini

Beispielausgabe:

Configuration File (php.ini) Path: /etc/php/8.2/cli
Loaded Configuration File:         /etc/php/8.2/cli/php.ini
Scan for additional .ini files in: /etc/php/8.2/cli/conf.d
Additional .ini files parsed:      /etc/php/8.2/cli/conf.d/10-opcache.ini, ...

> Wichtig: PHP hat oft separate php.ini Dateien für verschiedene SAPIs. Die CLI-Version (/etc/php/8.2/cli/php.ini) wird verwendet, wenn PHP von der Befehlszeile aus ausgeführt wird, während die Apache- oder PHP-FPM-Version (/etc/php/8.2/apache2/php.ini oder /etc/php/8.2/fpm/php.ini) für Webanfragen verwendet wird. Bearbeiten Sie immer die richtige für Ihren Anwendungsfall.

Methode 2: Verwendung von phpinfo() in einem Browser

Diese Methode zeigt genau, welche php.ini Datei Ihr Webserver lädt — was sich von der CLI-Version unterscheiden kann.

Schritt 1: Erstellen Sie eine neue Datei in Ihrem Web-Root-Verzeichnis:

sudo nano /var/www/html/info.php

Schritt 2: Fügen Sie den folgenden Inhalt hinzu:

<?php
phpinfo();
?>

Schritt 3: Speichern Sie die Datei und öffnen Sie dann Ihren Browser und navigieren Sie zu:

http://yourdomain.com/info.php

Schritt 4: Suchen Sie nach der Zeile "Loaded Configuration File" oben in der Ausgabe. Sie zeigt den vollständigen Pfad zur aktiven php.ini Datei.

> ⚠️ Sicherheitswarnung: Löschen Sie info.php sofort nach der Verwendung. Diese Datei macht sensible Serverkonfigurationsdetails verfügbar, die Angreifer ausnutzen können.

sudo rm /var/www/html/info.php

Methode 3: Verwendung von php -r (Schnelle One-Liner)

php -r "echo php_ini_loaded_file();"

Dies gibt den Pfad der geladenen php.ini Datei direkt in Ihrem Terminal aus — keine Dateierstellung erforderlich.

Häufige php.ini Speicherorte nach Plattform

Plattform / SetupTypischer php.ini Pfad
Ubuntu/Debian + Apache (PHP 8.2)/etc/php/8.2/apache2/php.ini
Ubuntu/Debian + PHP-FPM (PHP 8.2)/etc/php/8.2/fpm/php.ini
Ubuntu/Debian + CLI (PHP 8.2)/etc/php/8.2/cli/php.ini
CentOS/RHEL + Apache/etc/php.ini
cPanel/WHM/usr/local/lib/php.ini
Windows (XAMPP)C:xamppphpphp.ini
macOS (Homebrew PHP 8.2)/opt/homebrew/etc/php/8.2/php.ini

3. Bearbeitung der php.ini Datei {#editing-phpini}

Schritt 1: Erstellen Sie zunächst eine Sicherung

Erstellen Sie vor Änderungen immer eine Sicherung:

sudo cp /etc/php/8.2/apache2/php.ini /etc/php/8.2/apache2/php.ini.bak

Dies ermöglicht es Ihnen, die ursprüngliche Konfiguration schnell wiederherzustellen, falls etwas schief geht.

Schritt 2: Öffnen Sie die Datei in einem Texteditor

Verwenden Sie nano für eine anfängerfreundliche Erfahrung:

sudo nano /etc/php/8.2/apache2/php.ini

Oder verwenden Sie vim für fortgeschrittenere Bearbeitung:

sudo vim /etc/php/8.2/apache2/php.ini

Schritt 3: Navigieren und Bearbeiten von Direktiven

Die php.ini Datei ist groß (oft 1.500+ Zeilen). Verwenden Sie die Suchfunktion Ihres Editors, um zu bestimmten Direktiven zu springen:

  • In nano: Drücken Sie CTRL + W, dann geben Sie den Direktivnamen ein (z. B. memory_limit)
  • In vim: Drücken Sie /, dann geben Sie den Direktivnamen ein

Schritt 4: Speichern und Beenden

  • nano: Drücken Sie CTRL + X, dann Y, dann Enter
  • vim: Drücken Sie ESC, geben Sie :wq ein, dann drücken Sie Enter

4. Wichtige php.ini Direktiven erklärt {#key-directives}

Hier ist eine detaillierte Aufschlüsselung der wichtigsten php.ini Direktiven, die Sie kennen und konfigurieren sollten:

Speicher- und Ressourcenlimits

; Maximum memory a single PHP script can allocate
memory_limit = 256M

; Maximum time (in seconds) a script is allowed to run
max_execution_time = 60

; Maximum time PHP will spend parsing request data
max_input_time = 120

; Maximum number of input variables (important for complex forms)
max_input_vars = 3000

Datei-Upload-Einstellungen

; Whether file uploads are permitted
file_uploads = On

; Maximum size of an individual uploaded file
upload_max_filesize = 64M

; Maximum size of all POST data (must be >= upload_max_filesize)
post_max_size = 64M

; Maximum number of files that can be uploaded simultaneously
max_file_uploads = 20

> Faustregel: post_max_size muss immer gleich oder größer als upload_max_filesize sein. Wenn post_max_size kleiner ist, schlagen Uploads stillschweigend fehl.

Fehlerberichterstattung und Protokollierung

; ---- DEVELOPMENT ENVIRONMENT ----
; Show all errors on screen (never use in production)
error_reporting = E_ALL
display_errors = On
display_startup_errors = On

; ---- PRODUCTION ENVIRONMENT ----
; Log errors to a file, never display them to users
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php/error.log

Sitzungsverwaltung

; Where session data is stored on the server
session.save_path = "/var/lib/php/sessions"

; Session cookie lifetime in seconds (0 = until browser closes)
session.cookie_lifetime = 0

; Prevent JavaScript from accessing session cookies (XSS protection)
session.cookie_httponly = On

; Only send session cookies over HTTPS
session.cookie_secure = On

; Strict session ID mode (prevents session fixation attacks)
session.use_strict_mode = On

OPcache (Leistungs-Booster)

OPcache verbessert die PHP-Leistung dramatisch, indem es vorkompilierten Skript-Bytecode im gemeinsamen Speicher speichert:

opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1

5. Neustart Ihres Webservers {#restarting-server}

Änderungen an php.ini werden nicht wirksam, bis Sie den relevanten Dienst neu starten. Verwenden Sie den entsprechenden Befehl für Ihr Setup:

Apache (mod_php)

sudo systemctl restart apache2
# or on CentOS/RHEL:
sudo systemctl restart httpd

Nginx + PHP-FPM

# Restart PHP-FPM (replace 8.2 with your PHP version)
sudo systemctl restart php8.2-fpm

# Restart Nginx
sudo systemctl restart nginx

Graceful Reload (Keine Ausfallzeit)

Für Produktionsserver verwenden Sie ein sanftes Neuladen, um aktive Verbindungen nicht zu unterbrechen:

# Apache graceful reload
sudo systemctl reload apache2

# PHP-FPM graceful reload
sudo systemctl reload php8.2-fpm

Überprüfen Sie, ob Dienste ausgeführt werden

sudo systemctl status apache2
sudo systemctl status php8.2-fpm

6. Überprüfung Ihrer Änderungen {#verifying-changes}

Nach dem Neustart Ihres Servers bestätigen Sie, dass Ihre neuen Einstellungen aktiv sind, indem Sie eine dieser Methoden verwenden:

Methode 1: Befehlszeilen-Grep

# Check memory_limit
php -i | grep memory_limit

# Check upload_max_filesize
php -i | grep upload_max_filesize

# Check multiple values at once
php -i | grep -E 'memory_limit|upload_max_filesize|post_max_size|max_execution_time'

Methode 2: phpinfo() Seite

Erstellen Sie die info.php Datei vorübergehend neu (denken Sie daran, sie danach zu löschen) und suchen Sie nach Ihren geänderten Direktiven. Geänderte Werte werden in den Spalten "Local Value" und "Master Value" angezeigt.

Methode 3: PHP One-Liner

php -r "echo ini_get('memory_limit');"

7. Fortgeschrittene php.ini Optimierungstipps {#advanced-tips}

Verwendung von .htaccess zur Überschreibung von php.ini (Nur Apache)

Wenn Sie auf Shared Hosting sind oder keinen Root-Zugriff haben, können Sie bestimmte php.ini Einstellungen über .htaccess überschreiben:

php_value memory_limit 256M
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 120

> Hinweis: Dies funktioniert nur, wenn AllowOverride aktiviert ist und der Hosting-Anbieter PHP-Direktiven-Überschreibungen zulässt.

Verwendung von ini_set() in PHP-Code

Für anwendungsspezifische Einstellungen können Sie php.ini Werte zur Laufzeit in Ihren PHP-Skripten überschreiben:

<?php
ini_set('memory_limit', '512M');
ini_set('max_execution_time', '300');
?>

Pro-Verzeichnis php.ini Dateien (PHP-FPM)

Mit PHP-FPM können Sie verschiedene php.ini Einstellungen auf verschiedene virtuelle Hosts oder Verzeichnisse anwenden, indem Sie Pool-Dateien in /etc/php/8.2/fpm/pool.d/ konfigurieren. Dies ist besonders nützlich, wenn Sie mehrere Anwendungen mit unterschiedlichen Anforderungen hosten.

Wenn Sie mehrere PHP-Anwendungen verwalten, macht ein VPS mit cPanel es erheblich einfacher, PHP-Einstellungen pro Domain über eine grafische Oberfläche zu verwalten, ohne Konfigurationsdateien manuell zu bearbeiten.

8. Sicherheitshärtung über php.ini {#security-hardening}

Die ordnungsgemäße Konfiguration von php.ini ist eine der effektivsten Möglichkeiten, Ihre PHP-Umgebung gegen häufige Angriffe zu schützen.

Deaktivieren Sie gefährliche Funktionen

; Prevent execution of system commands from PHP scripts
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source

Beschränken Sie den Dateisystemzugriff

; Limit PHP file access to specific directories
open_basedir = /var/www/html:/tmp

Verstecken Sie PHP-Versionsinformationen

; Don't expose PHP version in HTTP headers
expose_php = Off

Deaktivieren Sie Remote-Dateieinbindung

; Prevent PHP from including remote URLs (common attack vector)
allow_url_fopen = Off
allow_url_include = Off

Sicherheit der Sitzung härten

session.cookie_httponly = On
session.cookie_secure = On
session.use_strict_mode = On
session.cookie_samesite = "Strict"

> Pro-Tipp: Wenn Sie eine E-Commerce-Site betreiben oder sensible Benutzerdaten verarbeiten, kombinieren Sie Ihre gehärtete php.ini mit einem gültigen SSL-Zertifikat um alle Daten während der Übertragung zu verschlüsseln. HTTPS ist obligatorisch, damit session.cookie_secure = On korrekt funktioniert.

9. Häufige php.ini Fehler, die zu vermeiden sind {#common-mistakes}

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen