Verwendung der .user.ini-Datei in ServBay: Leitfaden zur lokalen PHP-Konfiguration
ServBay ist eine leistungsstarke integrierte lokale Webentwicklungsumgebung, die speziell für Entwickler entwickelt wurde. Sie unterstützt zahlreiche Programmiersprachen und Technologien – darunter flexibles PHP-Versionen-Management und komfortable Konfigurationsoptionen. In der Praxis benötigen unterschiedliche Projekte oft jeweils eigene PHP-Einstellungen, etwa bezüglich Dateiupload-Größe, Speicherlimits oder Fehlermeldungen. Das direkte Bearbeiten der globalen php.ini würde jedoch alle Projekte betreffen, was die Verwaltung mehrerer Projekte erschwert.
Glücklicherweise bietet PHP mit der .user.ini-Datei eine Möglichkeit, individuelle PHP-Konfigurationen für bestimmte Verzeichnisse und deren Unterverzeichnisse festzulegen, ganz ohne die globale php.ini zu verändern. ServBay unterstützt .user.ini vollständig, sodass sich PHP-Einstellungen für einzelne Projekte oder Verzeichnisse bequem und effizient anpassen lassen.
In diesem Beitrag erfahren Sie, wie .user.ini funktioniert, wie Sie diese Datei in ServBay verwenden und anhand von Beispielen, wie Sie projektspezifische PHP-Konfigurationen festlegen können.
Einführung in die .user.ini-Datei
Die .user.ini-Datei wurde mit PHP 5.3.0 eingeführt. Sie stellt eine flexiblere und sicherere Alternative zur Verwendung von PHP-Konfigurationsanweisungen wie php_value oder php_flag in Webserver-Konfigurationsdateien (z. B. in Apaches .htaccess) dar. Sie erlaubt Entwicklern, eine .user.ini-Datei direkt im öffentlich erreichbaren Webverzeichnis zu platzieren – deren Anweisungen wirken dann nur für dieses Verzeichnis und dessen Unterverzeichnisse.
Hauptmerkmale
- Lokaler Gültigkeitsbereich: Einstellungen in einer
.user.ini-Datei wirken ausschließlich im entsprechenden Verzeichnis und allen dessen Unterverzeichnissen. Sie beeinflussen weder die globale ServBay-php.ininoch andere Projekte. - Hohe Flexibilität: Entwickler können für jedes Projekt individuell passende PHP-Konfigurationen festlegen.
- Einfache Verwaltung: Die globale Server- oder PHP-Konfiguration muss nicht geändert werden, was das Risiko von Konflikten reduziert und die Portabilität von Projekten erhöht.
- Kein Neustart notwendig: Änderungen an
.user.iniwerden nach Ablauf der durchuser_ini.cache_ttldefinierten Cache-Dauer automatisch übernommen (Standard: 300 Sekunden bzw. 5 Minuten) – ohne Neustart von PHP-FPM oder Webserver.
Konfigurierbare Direktiven
Nicht alle PHP-Konfigurationsanweisungen lassen sich über .user.ini festlegen. Welche Einstellungen möglich sind, regeln die sogenannten "Changeable Modes" einer Direktive. Nur Direktiven mit dem Modus PHP_INI_USER, PHP_INI_PERDIR oder PHP_INI_ALL lassen sich in .user.ini setzen.
Häufig in .user.ini genutzte Direktiven sind:
upload_max_filesizepost_max_sizememory_limitdisplay_errorslog_errorsmax_execution_timesession.save_pathdate.timezone
Direktiven mit dem Modus PHP_INI_SYSTEM (z. B. extension_dir, zend_extension, disable_functions etc.) können nicht in .user.ini gesetzt werden. Ihre Einstellung ist ausschließlich in der zentralen php.ini oder der Webserver-Konfiguration möglich.
Eine vollständige Liste mitsamt Modus finden Sie im PHP-Handbuch zur php.ini-Konfiguration.
Verwendung von .user.ini in ServBay
Die Nutzung einer .user.ini-Datei in ServBay ist einfach und selbsterklärend. Im Folgenden zeigen wir die Vorgehensweise am Beispiel der Einstellungen für upload_max_filesize und memory_limit.
Angenommen, das Wurzelverzeichnis Ihrer Webseite befindet sich im ServBay-Standardpfad /Applications/ServBay/www/. Für das Projekt myproject mit dem Web-Root /Applications/ServBay/www/myproject/public möchten Sie nun eigene PHP-Einstellungen definieren.
Schritt 1: Zielverzeichnis bestimmen
Zunächst bestimmen Sie das Verzeichnis, für das die individuellen PHP-Einstellungen gelten sollen. In der Regel ist das das öffentlich erreichbare Web-Wurzelverzeichnis Ihres Projekts (wie bei Laravel oder Symfony der public-Ordner) oder ein spezifisches Unterverzeichnis mit Sonderanforderungen.
Beispiel: /Applications/ServBay/www/myproject/public
Schritt 2: Die .user.ini-Datei erstellen oder bearbeiten
Erstellen Sie im Zielverzeichnis eine neue Datei mit dem Namen .user.ini (falls noch nicht vorhanden) bzw. editieren Sie die schon existierende Datei. Beachten Sie, dass unter vielen Betriebssystemen Dateinamen, die mit einem Punkt beginnen, standardmäßig versteckt werden. Passen Sie ggf. Ihre Einstellungen im Dateimanager an, um versteckte Dateien anzuzeigen.
Die Datei lässt sich z. B. im Terminal anlegen:
bash
cd /Applications/ServBay/www/myproject/public
touch .user.ini1
2
2
Öffnen Sie nun die .user.ini mit einem Texteditor und fügen Sie die benötigten PHP-Direktiven zeilenweise ein. Beispiel:
ini
; Maximale Upload-Größe auf 20MB setzen
upload_max_filesize = 20M
; PHP-Speicherlimit auf 256MB setzen
memory_limit = 256M
; Fehleranzeige aktivieren (nur für Entwicklung empfohlen)
display_errors = On1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Speichern und schließen Sie die .user.ini-Datei.
Schritt 3: Warten bis Einstellungen greifen oder manueller Refresh
Änderungen an .user.ini werden nicht sofort aktiv, sondern PHP puffert diese aus Performancegründen. Wie lange, regelt die Direktive user_ini.cache_ttl (Standard: 300 Sekunden = 5 Minuten). Nach Ablauf dieses Intervalls werden Änderungen automatisch übernommen.
Um Konfigurationsänderungen sofort zu testen, gibt es folgende Möglichkeiten (abhängig von Ihrer ServBay-Version und -Einstellungen):
- PHP-FPM-Prozess neu starten: Öffnen Sie das ServBay-Interface, suchen Sie die verwendete PHP-Version und stoppen sowie starten Sie den zugehörigen PHP-FPM-Dienst neu.
- Neustart von ServBay: Das ist der sicherste Weg, unterbricht jedoch alle lokalen Dienste.
- Warten Sie auf das Cache-Timeout: Dies ist die empfohlene Methode, insbesondere, wenn kein akuter Handlungsbedarf besteht.
Schritt 4: Funktion der .user.ini verifizieren
Um zu prüfen, ob Ihre .user.ini wie gewünscht wirkt, legen Sie im betreffenden Verzeichnis (z. B. /Applications/ServBay/www/myproject/public) eine PHP-Datei info.php mit folgendem Inhalt an:
php
<?php
phpinfo();
?>1
2
3
2
3
Speichern Sie die Datei info.php.
Rufen Sie dann das entsprechende info.php-Skript im Browser auf. Zum Beispiel: Sollte Ihr Projekt in ServBay unter der Domain myproject.servbay.demo erreichbar sein und die Datei im public-Verzeichnis liegen, lautet die Adresse wahrscheinlich https://myproject.servbay.demo/info.php.
Auf der phpinfo()-Seite finden Sie die aktuelle Einstellung Ihrer Direktiven – etwa upload_max_filesize, memory_limit oder display_errors. Es gibt jeweils zwei Spalten:
Master Value: Wert aus der globalenphp.ini.Local Value: Geltender Wert für das ausgeführte Skript, z. B. aus.user.inioder der Webserver-Konfiguration.
Steht in Local Value Ihr neu gesetzter Wert (z. B. 20M, 256M, On), dann hat die .user.ini erfolgreich Wirkung entfaltet.
Wichtiger Hinweis: Löschen oder schützen Sie die info.php nach dem Test wieder, um sensible Serverinformationen nicht öffentlich verfügbar zu machen.
Ergänzende Hinweise und Tipps
- Dateiname und -Ort: Die Datei muss exakt
.user.iniheißen und in jenem Verzeichnis liegen, für das Sie die Konfiguration ändern möchten. Ihre Wirkung erstreckt sich auch auf alle Unterverzeichnisse. - Direktiven-Mode: Beachten Sie erneut: Nur entsprechend als
PHP_INI_USER,PHP_INI_PERDIRoderPHP_INI_ALLmarkierte Settings dürfen in.user.inistehen.PHP_INI_SYSTEM-Direktiven werden ignoriert und lösen in der Regel auch keine Fehlermeldungen aus. Prüfen Sie dies im PHP-Handbuch. - Caching: Bedenken Sie das Verhalten der Einstellung
user_ini.cache_ttl. Wenn Sie regelmäßig Änderungen vornehmen und schnell testen möchten, können Sie den Wert in der globalenphp.initemporär herabsetzen (z. B.user_ini.cache_ttl = 5). Für produktive Umgebungen empfehlen wir jedoch keine zu kleinen Werte, um Performanceeinbußen zu vermeiden. Eine Änderung in der globalenphp.inierfordert einen PHP-FPM-Neustart. - Priorität: PHP-Einstellungen greifen in folgender Rangfolge: Core-Default <
php.ini(bzw. geladene Zusatz-.ini) < Webserver-Konfiguration (php_value/php_flagbei Apache/nginx-Modul) <.user.ini< Funktionini_set()in PHP-Skripten. Die Werte aus.user.iniüberschreiben die entsprechenden globalen Konfigurationen, können jedoch vonini_set()innerhalb der Skripte überlagert werden. - Sicherheit: Vermeiden Sie, vertrauliche Daten in
.user.iniabzulegen. Auch wenn die Datei nur auf das aktuelle (Unter-)Verzeichnis wirkt, liegt sie im öffentlich erreichbaren Webbereich (üblicherweise sind solche Dateien aber gegen Direktzugriff geschützt).
Häufige Fragen (FAQ)
Frage: Ich habe eine .user.ini erstellt und Einstellungen eingetragen, aber sie scheinen keine Wirkung zu entfalten. Woran kann das liegen?
Antwort: Möglich wären folgende Gründe:
- Falscher Name oder Speicherort: Vergewissern Sie sich, dass die Datei exakt
.user.iniheißt und am richtigen Ort liegt. - Nicht unterstützter Direktiven-Modus: Vielleicht haben Sie eine Direktive gewählt, die nicht via
.user.inigesetzt werden kann (also nichtPHP_INI_USERoderPHP_INI_PERDIR). Nachzulesen im PHP-Handbuch. - Cache noch nicht abgelaufen: Warten Sie die durch
user_ini.cache_ttlfestgelegte Zeit (i. d. R. 5 Minuten) ab oder starten Sie PHP-FPM neu. - Syntaxfehler: Überprüfen Sie Ihre
.user.inisorgfältig. - Wert wird durch höhere Priorität übersteuert: Prüfen Sie, ob z. B. ein Skript via
ini_set()den Wert wieder verändert.
Frage: Was ist der Unterschied zwischen einer .user.ini und der globalen php.ini?
Antwort: Die globale php.ini bestimmt die PHP-Konfiguration für die gesamte Umgebung (bzw. alle Anwendungen unter einer bestimmten PHP-Version). Sie gilt für sämtliche Skripte, es sei denn, eine lokalere Konfiguration überschreibt einzelne Werte. Die .user.ini wirkt dagegen nur im eigenen Verzeichnis und allen darin liegenden Unterverzeichnissen – und nur für entsprechend gekennzeichnete Direktiven. Der Hauptvorteil von .user.ini ist die gezielte, projektspezifische Anpassbarkeit ohne Änderungen an der globalen Infrastruktur.
Fazit
Die Verwendung der .user.ini-Datei in ServBay ist die empfohlene Methode zur Verwaltung projektspezifischer PHP-Einstellungen. Sie bietet größtmögliche Flexibilität und erlaubt es Entwicklern, die PHP-Umgebung einzelner Projekte gezielt und unabhängig von anderen Projekten oder der globalen ServBay-Konfiguration zu steuern. Dank dieses Leitfadens und der Beispiele sind Sie bestens gerüstet, .user.ini effektiv in Ihren ServBay-Projekten einzusetzen. ServBay verfolgt den Anspruch, Entwicklern ein leistungsfähiges, flexibles und einfach zu verwaltendes lokales Entwicklungswerkzeug zur Verfügung zu stellen – und die hervorragende .user.ini-Unterstützung ist ein Paradebeispiel für dieses Konzept.
