Om de Nextcloud-waarschuwing "De PHP OPcache is niet correct geconfigureerd" te verhelpen, opent u de volledige waarschuwing in de beheerdersinstellingen → Overzicht en verhoogt u vervolgens alleen de OPcache-limiet die wordt aangegeven in de PHP-configuratie die door de webserver wordt gebruikt. Start de betreffende PHP-service opnieuw en controleer de waarschuwing nogmaals; het wijzigen van alleen de PHP-configuratie via de opdrachtregel verandert mogelijk niet wat Nextcloud gebruikt.
Als Nextcloud bijvoorbeeld meldt dat de buffer voor geïnterneerde tekenreeksen bijna vol is, opcache.interned_strings_bufferis het verhogen van 16 naar 32 MB een redelijke eerste aanpassing, mits de server over voldoende RAM beschikt. Een andere waarschuwing, bijvoorbeeld over scripts in de cache of gedeeld geheugen, vereist een andere instelling.
Waarom geeft Nextcloud deze OPcache-waarschuwing weer?
OPcache slaat gecompileerde PHP-bytecode op in gedeeld geheugen, waardoor de hoeveelheid compilatie die nodig is voor herhaalde webverzoeken wordt verminderd. Het reserveert ook ruimte voor geïnterneerde strings, waardoor PHP identieke strings kan hergebruiken. Deze capaciteiten zijn afzonderlijke limieten, dus het vergroten van de ene lost niet noodzakelijkerwijs een waarschuwing over een andere op.
Volgens de documentatie voor serveroptimalisatie van Nextcloud 35 waarschuwt het beheerderspaneel wanneer de OPcache-groottebeperking meer dan 90% van de toegewezen capaciteit overschrijdt. Het bericht kan specifiek melding maken van een bijna volle buffer met geïnterneerde tekenreeksen, een beperkt aantal scripts in de cache of onvoldoende gedeeld geheugen. Deze details bepalen welke oplossing nodig is.
Nextcloud vereist dit ook opcache.save_comments=1, omdat het afhankelijk is van het behoud van PHP-codecommentaren. Een uitgeschakelde OPcache-extensie of het uitschakelen van het behoud van commentaren is daarom een configuratieprobleem, en niet slechts een probleem met de cachegrootte.
1. Identificeer de situatie die aandacht behoeft.
Meld u aan als beheerder, ga naar Beheerinstellingen → Overzicht en lees de volledige OPcache-waarschuwing. Noteer de exacte instructie als deze wordt genoemd. Ga er niet van uit dat elke OPcache-waarschuwing betekent dat de buffer voor geïnterneerde tekenreeksen te klein is.
- De buffer voor geïnterneerde tekenreeksen is bijna vol: controleer
opcache.interned_strings_buffer.
- OPcache gedeeld geheugen bijna vol: controleer
opcache.memory_consumption.
- Scripts of sleutels in de cache die de limiet bijna bereiken: controleer dit
opcache.max_accelerated_files.
- OPcache uitgeschakeld of opmerkingen niet bewaard: controleer
opcache.enableen opcache.save_comments.
2. Zoek de PHP-configuratie die Nextcloud gebruikt.
Op Debian- of Ubuntu-servers die PHP-FPM gebruiken, is de PHP-configuratie meestal georganiseerd op basis van de PHP-versie en de server-API. Zo kan PHP 8.3 FPM bijvoorbeeld bestanden lezen onder /etc/php/8.3/fpm/conf.d/, terwijl de PHP-module van Apache mogelijk bestanden leest onder /etc/php/8.3/apache2/conf.d/.
Om te zien welke PHP-FPM-services er op een systemd-host beschikbaar zijn, voert u het volgende commando uit:
systemctl list-units --type=service 'php*-fpm.service'
Controleer de betreffende OPcache-bestanden en vervang deze door uw geïnstalleerde PHP-versie:
sudo ls -l /etc/php/8.3/fpm/conf.d/*opcache*
sudo grep -R 'opcache\.' /etc/php/8.3/fpm/conf.d/
Als er geen bestanden worden gevonden, controleer dan de hoofdconfiguratie php.inien de verpakkingsconventies van uw distributie. De opdracht php --iniis handig om de CLI PHP-configuratie te achterhalen, maar CLI en PHP-FPM laden mogelijk verschillende instellingen.
Voor Docker of Nextcloud All-in-One moet u de PHP-configuratie in de Nextcloud-container controleren en een ondersteunde methode voor permanente configuratie gebruiken. Het bewerken van hostbestanden /etc/phpconfigureert PHP in een container meestal niet; het bewerken van een gegenereerd containerbestand kan bovendien ongedaan worden gemaakt bij het opnieuw opstarten.
3. Verhoog de gerapporteerde limiet zonder de niet-gerelateerde instellingen te wijzigen.
Maak een back-up van het betreffende configuratiebestand voordat u een wijziging aanbrengt. Bij een standaard Debian/Ubuntu PHP-FPM-installatie is een onderhoudbare aanpak het toevoegen van een lokale override in de FPM- conf.ddirectory van die PHP-versie. Controleer of deze directory daadwerkelijk wordt geladen door uw PHP-FPM-installatie voordat u verdergaat.
Voor het voorbeeld van de buffer met geïnterneerde tekenreeksen kunt u een lokale overschrijving maken of bewerken, bijvoorbeeld /etc/php/8.3/fpm/conf.d/99-nextcloud-opcache.ini:
; Example for a warning about interned strings
opcache.interned_strings_buffer=32
Hier 32betekent 32 MB, niet 32 bytes. Pas de uiteindelijke waarde aan op basis van het werkelijke gebruik en het beschikbare RAM-geheugen.
Als de waarschuwing een andere limiet noemt, gebruik dan het bijbehorende voorbeeld in plaats van alle drie klakkeloos toe te voegen:
; Example only: larger shared bytecode cache
opcache.memory_consumption=256
; Example only: allow more cached script keys
opcache.max_accelerated_files=20000
De waarden voor opcache.memory_consumptionworden uitgedrukt in megabytes, terwijl opcache.max_accelerated_fileseen limiet voor script-sleutels aangeeft. De officiële PHP OPcache-configuratiehandleiding legt de eenheden, standaardwaarden en wijzigbaarheid ervan uit.
Als de waarschuwing wijst op een uitgeschakelde OPcache of ontbrekende opmerkingen in plaats van capaciteitsproblemen, controleer dan in plaats daarvan de volgende instellingen:
opcache.enable=1
opcache.save_comments=1
Schakel Nextcloud niet uit opcache.validate_timestampsen verleng de verwerkingstijd niet aanzienlijk opcache.revalidate_freqom deze waarschuwing te negeren. Nextcloud waarschuwt dat een vertraagde cachevalidatie ervoor kan zorgen dat configuratie- en upgradewijzigingen niet direct van kracht worden.
4. Pas de nieuwe configuratie toe
Voor een voorbeeldserver waarop PHP 8.3 via PHP-FPM draait, moet u eerst de serviceconfiguratie valideren en vervolgens de betreffende service opnieuw starten tijdens een kort onderhoudsvenster:
sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm
Vervang dit 8.3door de geïnstalleerde PHP-FPM-versie en controleer de naam van het uitvoerbare bestand en de service voordat u een van beide commando's uitvoert. Een herstart onderbreekt de verzoeken die door die pool worden verwerkt. Op Apache met mod_phpis de relevante service Apache in plaats van PHP-FPM; voor containers volgt u de gedocumenteerde herstart- of heraanmaakprocedure van uw implementatie, waarbij de configuratie behouden blijft.
Als de service niet opnieuw opstart, herstel dan uw back-upconfiguratie en controleer het foutenlogboek van PHP-FPM of de webserver.
5. Als de waarschuwing blijft verschijnen, controleer dan de geldende PHP-webinstellingen.
Vernieuw eerst de beheerdersinstellingen → Overzicht nadat de PHP-workers opnieuw zijn opgestart. Als dezelfde waarschuwing blijft verschijnen, controleer dan of de gewijzigde instructie daadwerkelijk door de web -PHP-runtime wordt geladen en niet alleen door de CLI. Controleer of er een later geladen .inibestand is of een PHP-FPM-pooloverride die uw waarde overschrijft.
Op een server die u beheert, kunt u tijdelijk PHP-waarden van een webpagina inspecteren met behulp van een diagnostisch eindpunt met strikte toegangsbeperkingen en de PHP- ini_get()functie. Laat een openbare phpinfo()pagina nooit online staan: deze kan omgevingsinformatie, paden, modules en andere gevoelige configuratiegegevens onthullen. Verwijder elk diagnostisch eindpunt onmiddellijk na de verificatie.
Voor een aanhoudende waarschuwing over de grootte van de OPcache, controleer het werkelijke OPcache-gebruik onder normale omstandigheden in plaats van de waarden herhaaldelijk te verdubbelen. De PHP- opcache_get_status()documentatie beschrijft de geheugen-, geïnterneerde-string- en cache-scriptstatistieken die beschikbaar zijn voor een actief PHP-proces.
De officiële Docker-image en All-in-One-implementaties van Nextcloud gebruiken hun eigen PHP-standaardinstellingen; ga er niet vanuit dat wijzigingen op hostniveau of aanbevolen waarden van een andere installatie behouden blijven. Raadpleeg de officiële Nextcloud Docker-repository of de officiële All-in-One-repository voor het configuratiemodel dat overeenkomt met uw implementatie.
Controleer of de oplossing werkt.
Ga terug naar de beheerdersinstellingen → Overzicht en controleer of de specifieke OPcache-waarschuwing verdwenen is. Open en herlaad een paar Nextcloud-pagina's om te controleren of de applicatie nog steeds normaal reageert. Als de waarschuwing na normaal gebruik terugkeert, controleer dan opnieuw dezelfde gemeten limiet en de effectieve web-PHP-configuratie; het doel is om voldoende ruimte over te laten zonder onnodig geheugen aan OPcache toe te wijzen.