Om een Nextcloud PHP-geheugenlimietwaarschuwing te verhelpen, stelt u deze in de PHP-configuratie van de webserver memory_limitin op minimaal 512M512 MB en herstart of herlaadt u vervolgens de betreffende PHP-service. De huidige stabiele beheerhandleiding van Nextcloud adviseert een minimale waarde van 512 MB voor deze PHP-instelling. De meest voorkomende reden waarom een waarschuwing blijft bestaan na het bewerken van een bestand, is dat de webserver een andere PHP-configuratie gebruikt dan de PHP-installatie via de commandoregel.
Kies de procedure die overeenkomt met uw implementatie: Apache met mod_php, Apache of Nginx met PHP-FPM, een container of een beheerd Nextcloud-pakket. Wijzig de willekeurige configuratie van een host niet php.inien ga er niet vanuit dat elke implementatie deze gebruikt. Controleer het resultaat op de pagina 'Beheeroverzicht' van Nextcloud, die de configuratie van de webapplicatie weergeeft.
Wat betekent de waarschuwing?
PHP's memory_limitis het maximale geheugen dat een enkel PHP-script mag toewijzen. Het is niet het totale RAM-geheugen dat voor Nextcloud is gereserveerd en het verhoogt ook niet het fysieke geheugen dat beschikbaar is voor de server. De handleiding van Nextcloud adviseert om minimaal 512 MB voor deze richtlijn te configureren. De systeemvereisten leggen apart uit dat de werkelijke geheugenbehoefte van de server varieert afhankelijk van gebruikers, apps, bestanden en activiteiten; ze adviseren minimaal 512 MB RAM per PHP-proces, met een minimum van 128 MB.
Het verhogen van de PHP-limiet kan een configuratiewaarschuwing oplossen en geheugenintensieve verzoeken meer ruimte geven. Het kan echter geen extra RAM toevoegen aan een host met te weinig geheugen, een geheugenlek repareren of garanderen dat elke applicatie succesvol wordt voltooid. Als de server al onder geheugendruk staat, kan een hogere limiet per verzoek het risico vergroten dat gelijktijdige PHP-processen het systeem-RAM uitputten.
Welke PHP-configuratie moet je aanpassen?
Bepaal eerst hoe PHP Nextcloud uitvoert. Een terminalcontrole, zoals bijvoorbeeld, php --inigeeft de configuratie van de commandoregel (CLI) weer. Webverzoeken van Nextcloud kunnen een aparte Apache-module of PHP-FPM-service gebruiken met een andere configuratie php.iniof pool-override. Nextcloud geeft specifiek aan dat web- en CLI-PHP mogelijk verschillende configuratiebestanden gebruiken.
Typische locaties op Debian-gebaseerde systemen zijn onder andere /etc/php/8.x/apache2/php.inivoor de PHP-module van Apache en /etc/php/8.x/fpm/php.inivoor PHP-FPM. De daadwerkelijke PHP-versie en mapnamen variëren. Andere distributies gebruiken vaak andere paden, zoals een gedeelde map /etc/php.ini. Beschouw dit slechts als voorbeelden; gebruik uw pakketbeheerder, serviceconfiguratie en PHP-runtime om het actieve bestand te vinden.
Om de CLI-configuratie te controleren, voert u het volgende commando uit:
php --ini
php -i | grep -i '^memory_limit'
Deze commando's zijn handig voor geplande taken die PHP vanaf de commandoregel aanroepen, maar ze bewijzen niet dat het Nextcloud-proces dat in de browser wordt gebruikt dezelfde waarde gebruikt. Laat geen openbare phpinfo()pagina op de server staan: deze kan paden, modules en runtime-details prijsgeven.
Hoe stel je de limiet in voor Apache of PHP-FPM?
Maak een back-up van het actieve configuratiebestand voordat u het wijzigt. php.iniZoek in het juiste bestand de bestaande memory_limitregel en stel deze in op 512Mof een hogere waarde die geschikt is voor uw workload:
memory_limit = 512M
Gebruik één actieve instelling in plaats van dubbele regels aan het einde van meerdere bestanden toe te voegen. Een PHP-FPM-pool kan ook waarden definiëren voor zijn workers, dus controleer de poolconfiguratie als de waarde php.inigeen effect heeft. Sommige PHP-implementaties ondersteunen een per-directory-instelling .user.ini; of dit actief is, hangt af van de serverconfiguratie en moet worden bevestigd met de beheerder.
Apache met mod_php
Bewerk de php.inidoor Apache gebruikte configuratie, sla deze op en herstart Apache zodat de module de instellingen opnieuw laadt. Servicenamen variëren. Op Debian of Ubuntu is de service meestal apache2; op RHEL-systemen is deze meestal httpd. Gebruik de servicenaam die overeenkomt met uw besturingssysteem en onderhoudsprocedures.
sudo systemctl restart apache2
Vervang dit apache2als uw distributie een andere eenheidsnaam gebruikt. Als Nextcloud via PHP-FPM in plaats van mod_php wordt aangeboden, zal het herstarten van Apache alleen de PHP-workers niet opnieuw laden.
Apache of Nginx met PHP-FPM
Bewerk de PHP-FPM-configuratie die daadwerkelijk door de site wordt gebruikt. Nadat u de wijziging hebt opgeslagen, start u de bijbehorende PHP-FPM-service opnieuw of laadt u deze opnieuw. De eenheid kan bijvoorbeeld de PHP-versie bevatten php8.3-fpmof een andere leverancierspecifieke naam gebruiken.
sudo systemctl restart php8.3-fpm
Gebruik de juiste servicenaam voor uw geïnstalleerde PHP-versie. Nginx stuurt PHP-verzoeken door naar FPM, dus het wijzigen van PHP-instellingen vereist meestal dat de wijziging ook in FPM wordt doorgevoerd; het herstarten van Nginx alleen herlaadt de geheugenlimiet van PHP niet. Als uw PHP-FPM-poolconfiguratie een override heeft memory_limit, pas dan de poolinstelling aan of verwijder de override en herstart vervolgens de pool.
Wat als Nextcloud in Docker, AIO, Snap of een ander pakket draait?
Gebruik het configuratiemechanisme voor die installatiemethode. Het bewerken van de PHP-bestanden van de host wijzigt doorgaans de PHP-runtime in een container of een geïsoleerd pakket niet. De officiële Nextcloud Docker-image documenteert de PHP_MEMORY_LIMITomgevingsvariabele, met een standaardwaarde 512Min de documentatie van de huidige image. Stel deze in in het Compose-bestand of de containerconfiguratie en maak vervolgens de applicatiecontainer opnieuw aan of herstart deze volgens de implementatieprocedure.
environment:
PHP_MEMORY_LIMIT: 512M
Kopieer die instelling niet naar elk installatietype. De Nextcloud-handleiding vermeldt dat kant-en-klare omgevingen zoals AIO, Snap, NCP en Community Docker een vooraf geconfigureerde PHP-versie hebben en verwijst beheerders naar de pakketspecifieke instructies voor aanpassing. Gebruik voor die configuraties de ondersteunde interface of documentatie van het betreffende pakket. Permanente volume-mounts en gegenereerde configuraties kunnen een eenmalige handmatige wijziging ook overschrijven.
Hoe kunt u bevestigen dat de waarschuwing is verholpen?
- Pas de wijziging toe in de PHP-configuratie voor de webinterface en herstart of herlaad de betreffende web-/PHP-service.
- Meld u aan bij Nextcloud als beheerder en open Instellingen > Beheer > Overzicht .
- Vernieuw de pagina en controleer de configuratiewaarschuwingen. Controleer of de waarschuwing over de PHP-geheugenlimiet is verdwenen.
- Voer een representatieve bewerking uit die eerder de waarschuwing veroorzaakte, zoals de betreffende app-taak, en controleer de Nextcloud- en PHP-logboeken op berichten over geheugenuitputting.
Als je Nextcloud-achtergrondtaken ook via systeemcron uitvoert, controleer dan de PHP-configuratie van de CLI afzonderlijk. De waarschuwing op de website kan worden verwijderd, terwijl CLI-taken nog steeds een lagere limiet gebruiken. Controleer de CLI-waarde met php --inien php -ivoor hetzelfde PHP-binair bestand dat door de cron-opdracht wordt gebruikt.
Wanneer moet je de waarde boven de 512 miljoen verhogen?
Verhoog de limiet alleen wanneer de waarschuwing is verdwenen, maar een gedocumenteerde workload nog steeds de PHP-limiet bereikt, of wanneer de ondersteuningsrichtlijnen van een app meer geheugen vereisen. Controleer eerst het daadwerkelijke servergeheugen, het aantal PHP-FPM-workers, het databasegeheugen en andere services. Omdat PHP de limiet per script toepast, kunnen meerdere actieve workers tegelijkertijd aanzienlijk veel geheugen gebruiken. Stel een gemeten limiet in die past bij het geheugenbudget van de host in plaats van de limiet te gebruiken -1, die volgens PHP geen geheugenlimiet heeft.
Als de waarschuwing verdwenen is, maar de server nog steeds trager wordt of processen worden beëindigd, controleer dan het geheugen- en swapgebruik van het systeem, de PHP-FPM-logboeken en de Nextcloud-logboeken. Overweeg of een specifieke app of aanvraag buitensporig veel geheugen verbruikt. Een geheugencache zoals APCu of Redis lost problemen met caching en prestaties op; het is geen vervanging voor het instellen van de PHP-instellingen memory_limit. Wijzig één factor tegelijk, zodat u kunt vaststellen of het resultaat verbeterd is.
Snelle controles op basis van symptomen
- De waarschuwing blijft zichtbaar na het bewerken van php.ini: controleer of u het CLI-bestand in plaats van het Apache/FPM-bestand hebt bewerkt, of dat een poolinstelling dit overschrijft.
- De waarschuwing verdwijnt, maar een cron-taak mislukt nog steeds: controleer het CLI PHP-binair bestand en de bijbehorende configuratie.
- De webserver geeft na een herstart een foutmelding: controleer de status en logbestanden van de webserver of de PHP-FPM-service en herstel de back-up als de configuratiewijziging een opstartfout heeft veroorzaakt.
- De waarschuwing verdwijnt, maar de host heeft geen RAM meer: verlaag de gelijktijdigheid, voeg geheugen toe of identificeer het proces dat geheugen gebruikt voordat u de PHP-limiet verder verhoogt.
- Je gebruikt een container of een kant-en-klaar pakket: wijzig de ondersteunde PHP-instellingen van het pakket in plaats van het php.ini-bestand van de host.
Officiële referenties