Hoe gebruik je .user.ini
in ServBay: Een gids voor lokale PHP-configuratie
ServBay is een krachtig, geïntegreerd lokaal webontwikkelplatform, ontworpen voor ontwikkelaars en biedt ondersteuning voor meerdere talen en technologieën, waaronder flexibele PHP-versiebeheer en handige configuratieopties. In de praktijk kunnen verschillende projecten diverse eisen stellen aan PHP-instellingen, zoals limieten voor uploadgrootte van bestanden, geheugengrenzen of foutmeldingsniveaus. Het direct wijzigen van het globale php.ini
-bestand heeft impact op alle projecten, wat onhandig is wanneer je met meerdere projecten werkt.
Gelukkig biedt PHP het .user.ini
-mechanisme, waarmee ontwikkelaars aangepaste PHP-instellingen kunnen definiëren in specifieke mappen en hun submappen, zonder dat het globale php.ini
hoeft te worden aangepast. ServBay ondersteunt .user.ini
volledig, waardoor het eenvoudig en efficiënt wordt om per project of directory PHP-instellingen aan te passen.
In dit artikel lees je hoe .user.ini
werkt, hoe je het toepast binnen ServBay, en vind je voorbeelden van het instellen van aangepaste PHP-configuratie voor specifieke projecten.
Introductie tot .user.ini
-bestanden
Het .user.ini
-bestand is geïntroduceerd sinds PHP 5.3.0 en biedt een flexibelere en veiligere manier om PHP-parameters in te stellen dan voorheen mogelijk was via php_value
of php_flag
in webserverconfiguraties zoals Apache's .htaccess
. Hierdoor kun je een .user.ini
-bestand plaatsen in een webtoegankelijke directory, waarbij de instellingen alleen gelden voor scripts in die map en onderliggende mappen.
Belangrijkste kenmerken
- Lokale reikwijdte: De instellingen in een
.user.ini
-bestand zijn alleen van kracht binnen de map waar het bestand zich bevindt en alle submappen, zonder invloed op de globale ServBayphp.ini
of andere projecten. - Grote flexibiliteit: Je kunt per project afzonderlijke PHP-configuratie samenstellen, toegesneden op de specifieke behoeften.
- Eenvoudig beheer: Het is niet nodig het globale server- of PHP-configuratiebestand aan te passen, waardoor het risico op conflicterende instellingen afneemt en projecten onafhankelijk en draagbaar blijven.
- Geen herstart nodig: In tegenstelling tot wijzigingen aan
php.ini
, die normaal gesproken een herstart van PHP-FPM of de webserver vereisen, worden aanpassingen aan.user.ini
doorgaans automatisch doorgevoerd binnen de dooruser_ini.cache_ttl
ingestelde periode (standaard meestal 300 seconden, oftewel 5 minuten).
Welke instellingen kun je aanpassen
Niet alle PHP-configuratie-instellingen kunnen via .user.ini
worden ingesteld. Of een instelling via .user.ini
kan worden aangepast, wordt bepaald door de zogenoemde ‘Changeable Modes’. Alleen instellingen met het type PHP_INI_USER
, PHP_INI_PERDIR
of PHP_INI_ALL
zijn aanpasbaar via een .user.ini
-bestand.
Veelgebruikte instellingen die je in .user.ini
kunt plaatsen:
upload_max_filesize
post_max_size
memory_limit
display_errors
log_errors
max_execution_time
session.save_path
date.timezone
Instellingen van het type PHP_INI_SYSTEM
(zoals extension_dir
, zend_extension
, disable_functions
, enz.) kunnen niet met .user.ini
worden aangepast; hiervoor moet je het hoofd php.ini
-bestand of de webserverconfiguratie gebruiken.
Raadpleeg voor het wijzigbare niveau van elke instelling de officiële PHP-documentatie over ini-instellingen.
.user.ini
gebruiken in ServBay
Het gebruik van een .user.ini
-bestand in ServBay is eenvoudig. Hieronder vind je de stappen aan de hand van een voorbeeld waarin upload_max_filesize
en memory_limit
worden ingesteld.
Stel dat je webroot zich standaard bevindt onder /Applications/ServBay/www/
, en je wilt aangepaste PHP-instellingen maken voor een project myproject
met als webroot /Applications/ServBay/www/myproject/public
.
Stap 1: Bepaal de doeldirectory
Bepaal allereerst in welke map je aangepaste PHP-instellingen van kracht moeten worden. Doorgaans is dit de webroot van je project (zoals de public
-map in Laravel of Symfony), of een specifieke submap waar aparte instellingen gewenst zijn.
Voorbeeld: /Applications/ServBay/www/myproject/public
Stap 2: Maak of bewerk het .user.ini
-bestand
Maak in deze doeldirectory een nieuw bestand genaamd .user.ini
aan (of bewerk het, als het al bestaat). Let op: bestanden die beginnen met een punt zijn op de meeste systemen verborgen; je moet je bestandsbeheerder mogelijk instellen om verborgen bestanden te tonen.
Een bestand maken via de terminal:
bash
cd /Applications/ServBay/www/myproject/public
touch .user.ini
1
2
2
Open vervolgens .user.ini
met een teksteditor en voeg je gewenste PHP-instellingen toe, één per regel. Bijvoorbeeld:
ini
; Stel de maximale uploadgrootte in op 20MB
upload_max_filesize = 20M
; Stel de geheugenlimiet voor PHP-scripts in op 256MB
memory_limit = 256M
; Schakel foutweergave in (alleen aanbevolen voor ontwikkelomgevingen)
display_errors = On
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Sla het .user.ini
-bestand op en sluit het.
Stap 3: Wacht tot de wijzigingen actief worden of forceer een refresh
Veranderingen aan het .user.ini
-bestand worden niet direct actief, aangezien PHP deze bestanden in cache houdt voor betere prestaties. De user_ini.cache_ttl
-instelling bepaalt hoelang de cache geldig blijft, standaard 300 seconden (5 minuten). Je wijzigingen worden automatisch actief als de cache verloopt.
Wil je direct resultaat zien, dan kun je de volgende methoden proberen (effectiviteit hangt af van je ServBay-versie en configuratie):
- Herstart de relevante PHP-FPM-processen: Zoek in het ServBay-dashboard de PHP-versie die je site gebruikt en stop en start de bijbehorende PHP-FPM-dienst opnieuw op.
- Herstart ServBay volledig: Dit is de meest grondige methode, maar onderbreekt alle lokale services.
- Wacht tot de cache verloopt: De aanbevolen aanpak, zeker als het niet dringend is.
Stap 4: Controleer of het .user.ini
-bestand werkt
Om te toetsen of je .user.ini
wel effect heeft gehad, kun je een simpel PHP-bestand maken dat de PHP-configuratie weergeeft.
Maak in dezelfde map als waar je .user.ini
hebt geplaatst (bijvoorbeeld /Applications/ServBay/www/myproject/public
) een bestand met de naam info.php
, en plaats hier de volgende inhoud in:
php
<?php
phpinfo();
?>
1
2
3
2
3
Sla info.php
op.
Benader vervolgens dit bestand in je browser via je ServBay-website. Bijvoorbeeld: als je project via ServBay toegankelijk is op het domein myproject.servbay.demo
en info.php
staat in de public
-map, dan bezoek je waarschijnlijk https://myproject.servbay.demo/info.php
.
Op de getoonde phpinfo()
-pagina kan je zoeken naar de instellingen die je in .user.ini
hebt geplaatst (upload_max_filesize
, memory_limit
, display_errors
). Je ziet doorgaans twee kolommen: Master Value
en Local Value
.
Master Value
toont de waarde uit het globalephp.ini
-bestand.Local Value
toont de waarde die geldig is voor het huidige script; deze kan bijvoorbeeld uit.user.ini
of uit de webserverconfiguratie komen.
Als Local Value
het door jou ingestelde (bijv. 20M
, 256M
, On
) weergeeft, dan weet je zeker dat .user.ini
werkt.
Belangrijk: Verwijder of beperk na controle de toegang tot het info.php
-bestand, omdat het gedetailleerde serverinformatie prijsgeeft.
Aanvullende tips en aandachtspunten
- Bestandsnaam en locatie: Het bestand moet exact
.user.ini
heten en in de gewenste map staan; de instellingen gelden altijd voor die map én submappen. - Type instelling: Herhaal: alleen instellingen met bepaalde modi kunnen in
.user.ini
staan. Probeer je eenPHP_INI_SYSTEM
-instelling toe te voegen, dan werkt dat niet en meestal volgt er geen foutmelding. Zie de PHP-handleiding. - Caching: Let op de waarde van
user_ini.cache_ttl
. Als je vaak je.user.ini
aanpast en direct effect wilt, kun je tijdelijk de globale waarde hiervan in het php.ini-bestand laag instellen (bijv.user_ini.cache_ttl = 5
). Dit heeft invloed op de prestaties en wordt afgeraden in productie. Denk eraan: wijzigen in php.ini vereist een herstart van PHP-FPM. - Prioriteit: De volgorde waarin PHP-instellingen worden toegepast is doorgaans: Core standaarden <
php.ini
(of extra loaded .ini-bestanden) < Webserverconfiguratie (php_value
/php_flag
; bijv. via Apache/nginx) <.user.ini
< aanroepen van deini_set()
-functie in scripts. Instellingen uit.user.ini
overschrijven dus de globale waarden, maar kunnen doorini_set()
alsnog overschreven worden. - Veiligheid: Plaats geen gevoelige informatie in
.user.ini
. Ook al werkt het bestand alleen in de betreffende map, het is zichtbaar binnen de webtoegankelijke structuur (al wordt het doorgaans niet direct geserveerd).
Veelgestelde vragen (FAQ)
Vraag: Ik heb een .user.ini
-bestand gemaakt en instellingen toegevoegd, maar deze lijken niet van kracht. Hoe kan dat?
Antwoord: Mogelijke oorzaken zijn:
- Bestandsnaam of locatie onjuist: Zorg dat het exact
.user.ini
heet en op de juiste plek staat. - Niet-ondersteunde instelling: Misschien probeer je een instelling aan te passen die niet geschikt is voor
.user.ini
(geenPHP_INI_USER
- ofPHP_INI_PERDIR
-modi). Controleer de PHP-handleiding. - Cache niet verlopen: Wacht de door
user_ini.cache_ttl
ingestelde tijd (meestal 5 minuten), of herstart PHP-FPM. - Syntaxfout: Controleer het bestand op type- of syntaxfouten.
- Overschreven door hogere prioriteit: Kijk of een script via
ini_set()
je instellingen overschrijft.
Vraag: Wat is het verschil tussen .user.ini
en het globale php.ini
-bestand?
Antwoord: Het globale php.ini
-bestand geldt voor de complete PHP-omgeving (of alle applicaties van een specifieke PHP-versie) en de instellingen zijn geldig voor alle scripts, behalve als ze worden overschreven. Een .user.ini
-bestand geldt alleen voor de map waarin het staat en alle submappen – en je kunt er alleen instellingen van bepaalde typen mee aanpassen. Het voordeel van .user.ini
is dus vooral de lokale toepasbaarheid zonder het globale systeem te hoeven aanpassen.
Samenvatting
Gebruikmaken van .user.ini
-bestanden in ServBay is dé aanbevolen manier om per project PHP-instellingen te beheren. Het is uiterst flexibel en maakt het mogelijk om per project de PHP-omgeving te optimaliseren, zonder invloed op andere projecten of de globale ServBay-configuratie. Dankzij deze gids en de voorbeelden kun je eenvoudig .user.ini
toepassen binnen je ServBay-projecten, wat bijdraagt aan efficiënter werken en gemakkelijker beheer. ServBay is ontworpen als krachtig en flexibel hulpmiddel voor ontwikkelaars – en de uitstekende ondersteuning voor .user.ini
is daar een perfect voorbeeld van.