Sparen Sie 15% bei allen Hosting-Diensten

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

Benutze den Code: Skills Anfangen
Abschnitte
Linux Verwaltung

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 fast jeder modernen Webanwendung. Egal ob Sie WordPress, Laravel, Magento oder eine benutzerdefinierte Anwendung betreiben, 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 Sie es finden, wie Sie es sicher bearbeiten und wie Sie überprüfen, dass Ihre Änderungen korrekt funktionieren.

1. Was ist php.ini und warum ist es wichtig?

Die php.ini Datei ist eine Klartextkonfigurationsdatei, 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, Sicherheit und Benutzerfreundlichkeit Ihrer Anwendung 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. Locating the php.ini File

Der Speicherort von php.ini variiert je nach 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 Web-Anfragen 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 an.

> ⚠️ Sicherheitswarnung: Löschen Sie info.php sofort nach der Verwendung. Diese Datei offenbart sensible Serverkonfigurationsdetails, 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 Ihr 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

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 Direktiven bearbeiten

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 Namen der Direktive ein (z. B. memory_limit)
  • In vim: Drücken Sie /, dann geben Sie den Namen der Direktive 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

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 & 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 (Performance-Booster)

OPcache verbessert die PHP-Leistung dramatisch, indem vorkompilierter Script-Bytecode im gemeinsamen Speicher gespeichert wird:

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

Änderungen an php.ini werden nicht wirksam, bis Sie den relevanten Service 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 (Zero Downtime)

Verwenden Sie für Produktionsserver einen Graceful Reload, 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 Services ausgeführt werden

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

6. Ihre Änderungen überprüfen

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

Methode 1: Command Line 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. Erweiterte php.ini Optimierungstipps

Verwendung von .htaccess zum Überschreiben 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-Overrides zulässt.

Verwendung von ini_set() im 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 Virtual 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 die Verwaltung von PHP-Einstellungen pro Domain durch eine grafische Benutzeroberfläche erheblich einfacher, ohne dass Sie Konfigurationsdateien manuell bearbeiten müssen.

8. Sicherheitshärtung über php.ini

Die ordnungsgemäße Konfiguration von php.ini ist eine der effektivsten Möglichkeiten, um Ihre PHP-Umgebung vor häufigen Angriffen 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

Dateisystemzugriff einschränken

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

PHP-Versionsinformationen ausblenden

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

Remote-Dateieinbindung deaktivieren

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

Sitzungssicherheit härten

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

> Pro-Tipp: Wenn Sie einen E-Commerce-Shop betreiben oder sensible Benutzerdaten verarbeiten, kombinieren Sie Ihr gehärtetes php.ini mit einem gültigen SSL-Zertifikat, um alle Daten während der Übertragung zu verschlüsseln. HTTPS ist erforderlich, damit session.cookie_secure = On ordnungsgemäß funktioniert.

9. Häufige php.ini-Fehler, die vermieden werden sollten

FehlerWarum es ein Problem istLösung
Setting memory_limit = -1 in productionErmöglicht Skripten, unbegrenzten RAM zu verbrauchen, was zu Serverabstürzen führtSetzen Sie ein angemessenes Limit wie 256M oder 512M
display_errors = On in productionOffenbart sensible Dateipfade und Datenbankzugangsdaten für BenutzerSetzen Sie auf Off und verwenden Sie stattdessen log_errors = On
post_max_size < upload_max_filesizeVerursacht stille Upload-FehlerSetzen Sie immer post_max_sizeupload_max_filesize
Bearbeitung der falschen php.iniÄnderungen werden nicht auf Web-Anfragen angewendetVerwenden Sie phpinfo(), um zu bestätigen, welche Datei von Ihrem Webserver geladen wird
Server nach Änderungen nicht neu startenAlte Einstellungen bleiben aktivStarten Sie Apache oder PHP-FPM nach der Bearbeitung immer neu
info.php auf dem Server belassenOffenbart die vollständige Serverkonfiguration für AngreiferLöschen Sie sofort nach der Verwendung
Setting allow_url_include = OnErmöglicht Remote File Inclusion (RFI)-AngriffeHalten Sie dies immer Off

10. Fazit

Die Beherrschung der php.ini-Konfiguration ist eine grundlegende Fähigkeit für jeden Systemadministrator oder Webentwickler. Die richtigen Einstellungen können den Unterschied zwischen einem langsamen, anfälligen Server und einer schnellen, sicheren, produktionsreifen Umgebung ausmachen.

Zusammenfassung der wichtigsten Erkenntnisse:

  • Sichern Sie immer php.ini vor Änderungen
  • Identifizieren Sie die richtige Datei — CLI und Web-Server-SAPIs verwenden oft unterschiedliche php.ini-Dateien
  • Optimieren Sie Ressourcenlimits (memory_limit, max_execution_time, upload_max_filesize), um den Anforderungen Ihrer Anwendung zu entsprechen
  • Erhöhen Sie die Sicherheit, indem Sie gefährliche Funktionen deaktivieren, Versionsinformationen verbergen und den Dateizugriff einschränken
  • Aktivieren Sie OPcache für erhebliche Leistungssteigerungen
  • Zeigen Sie Fehler niemals in der Produktion an — protokollieren Sie sie stattdessen
  • Starten Sie Ihren Web-Server neu nach jeder Änderung und überprüfen Sie mit phpinfo() oder php -i

Die Hosting-Umgebung, die Sie wählen, spielt auch eine wichtige Rolle dafür, wie viel Kontrolle Sie über die PHP-Konfiguration haben. Mit Dedicated Servers von AlexHost erhalten Sie vollständigen, uneingeschränkten Zugriff auf die PHP-Konfiguration Ihres Servers — ideal für hochfrequente Anwendungen mit komplexen Anforderungen. Für kleinere Projekte oder Teams, die gerade anfangen, bieten Shared Web Hosting-Pläne eine verwaltete Umgebung, in der viele PHP-Einstellungen bereits für Sie voroptimiert sind.

Überprüfen Sie Ihre php.ini-Konfiguration regelmäßig, wenn sich Ihre Anwendung entwickelt, PHP-Versionen aktualisiert werden und sich Ihre Verkehrsmuster ändern. Eine gut abgestimmte PHP-Umgebung ist keine einmalige Einrichtung — es ist eine laufende Praxis, die sich in Leistung, Zuverlässigkeit und Sicherheit auszahlt.