Pentru a șterge un avertisment privind limita de memorie PHP Nextcloud, setați memory_limitcel puțin la 512Mîn configurația PHP utilizată de serverul web, apoi reporniți sau reîncărcați serviciul PHP relevant. Manualul de administrare stabil actual al Nextcloud recomandă cel puțin 512 MB pentru această setare PHP. Cel mai frecvent motiv pentru care un avertisment rămâne după editarea unui fișier este că serverul web utilizează o configurație PHP diferită de instalarea PHP din linia de comandă.
Alegeți procedura care se potrivește implementării dvs.: Apache cu mod_php, Apache sau Nginx cu PHP-FPM, un container sau un pachet Nextcloud gestionat. Nu editați configurația aleatorie a unei gazde php.iniși nu presupuneți că fiecare implementare o folosește. Verificați rezultatul din pagina Prezentare generală a administratorului Nextcloud, care reflectă configurația aplicației web.
Ce înseamnă avertismentul?
Memoria maximă pe care o poate aloca un singur script PHP este cea recomandată de PHP memory_limit. Nu este memoria RAM totală rezervată pentru Nextcloud și nu crește memoria fizică disponibilă serverului. Manualul Nextcloud recomandă configurarea a cel puțin 512 MB pentru această directivă. Separat, cerințele de sistem explică faptul că nevoile reale de memorie ale serverului variază în funcție de utilizatori, aplicații, fișiere și activitate; se recomandă cel puțin 512 MB de RAM per proces PHP, cu minimum 128 MB.
Creșterea limitei PHP poate rezolva o avertizare de configurare și poate oferi mai mult spațiu cererilor care consumă multă memorie. Nu poate adăuga RAM la o gazdă subdimensionată, nu poate repara o scurgere de memorie sau nu poate garanta că fiecare aplicație se va finaliza cu succes. Dacă serverul este deja sub presiune de memorie, un plafon per cerere mai mare poate crește riscul ca lucrătorii PHP concurenți să epuizeze memoria RAM a sistemului.
Ce configurație PHP ar trebui să editezi?
Mai întâi, identificați modul în care PHP rulează Nextcloud. O verificare a terminalului, cum ar fi php --inicea din linia de comandă (CLI), raportează configurația liniei de comandă (CLI). Cererile web ale Nextcloud pot utiliza un modul Apache separat sau un serviciu PHP-FPM cu o altă php.inisuprascriere a pool-ului. Nextcloud menționează în mod specific că PHP pentru web și CLI pot utiliza fișiere de configurare diferite.
Locațiile tipice pe sistemele derivate din Debian includ /etc/php/8.x/apache2/php.inimodulul PHP al Apache și /etc/php/8.x/fpm/php.iniPHP-FPM. Versiunea reală de PHP și numele directoarelor variază. Alte distribuții utilizează în mod obișnuit căi diferite, cum ar fi un fișier partajat /etc/php.ini. Tratați acestea doar ca exemple; utilizați managerul de pachete, configurația serviciului și runtime-ul PHP pentru a localiza fișierul activ.
Pentru a inspecta configurația CLI, executați:
php --ini
php -i | grep -i '^memory_limit'
Aceste comenzi sunt utile pentru joburi programate care invocă PHP din linia de comandă, dar nu dovedesc că procesul Nextcloud orientat spre browser folosește aceeași valoare. Evitați să lăsați o phpinfo()pagină publică pe server: aceasta poate dezvălui căi, module și detalii despre runtime.
Cum setezi limita pentru Apache sau PHP-FPM?
Faceți o copie de rezervă a fișierului de configurare activ înainte de a-l modifica. În câmpul corect php.ini, găsiți memory_limitlinia existentă și setați-o la 512Msau la o valoare mai mare selectată pentru sarcina de lucru:
memory_limit = 512M
Folosește o singură setare activă în loc să adaugi linii duplicate la sfârșitul mai multor fișiere. Un pool PHP-FPM poate defini și valori pentru workerii săi, așa că verifică configurația pool-ului dacă valoarea din acesta php.ininu are efect. Unele implementări PHP acceptă o setare per director .user.ini; dacă aceasta este activă depinde de configurația serverului și trebuie confirmată cu administratorul.
Apache folosind mod_php
Editați fișierul php.iniutilizat de Apache, salvați-l, apoi reporniți Apache astfel încât modulul să își reîncarce setările. Numele serviciilor variază. Pe Debian sau Ubuntu, serviciul este de obicei apache2; pe sistemele din familia RHEL este de obicei httpd. Folosiți numele serviciului pentru sistemul dvs. de operare și procedurile de întreținere.
sudo systemctl restart apache2
Înlocuiți apache2dacă distribuția dvs. folosește un nume de unitate diferit. Dacă Nextcloud este servit prin PHP-FPM în loc de mod_php, repornirea Apache singură nu va reîncărca workerele PHP.
Apache sau Nginx folosind PHP-FPM
Editați configurația PHP-FPM utilizată efectiv de site. După salvarea modificării, reporniți sau reîncărcați serviciul PHP-FPM corespunzător. Unitatea sa poate include versiunea PHP, de exemplu php8.3-fpm, sau poate utiliza un alt nume specific furnizorului.
sudo systemctl restart php8.3-fpm
Folosește numele de serviciu corect pentru versiunea PHP instalată. Nginx transmite cererile PHP către FPM, așadar modificarea setărilor PHP necesită de obicei aplicarea modificării la FPM; repornirea Nginx singură nu reîncarcă limita de memorie a PHP. Dacă configurația pool-ului PHP-FPM are prioritate memory_limit, ajustează setarea pool-ului sau elimină suprascrierea, apoi repornește pool-ul.
Ce se întâmplă dacă Nextcloud rulează în Docker, AIO, Snap sau alt pachet?
Folosește mecanismul de configurare pentru metoda de instalare respectivă. Editarea fișierelor PHP ale gazdei nu modifică, de obicei, runtime-ul PHP din interiorul unui container sau al unui pachet izolat. Imaginea oficială Nextcloud Docker documentează PHP_MEMORY_LIMITvariabila de mediu, cu o valoare implicită 512Mîn documentația imaginii curente. Setează-o în fișierul Compose sau în configurația containerului, apoi recreează sau repornește containerul aplicației conform procedurii de implementare.
environment:
PHP_MEMORY_LIMIT: 512M
Nu copiați acea setare pentru fiecare tip de instalare. Manualul Nextcloud precizează că mediile la cheie, cum ar fi AIO, Snap, NCP și Community Docker, au PHP preconfigurat și îi direcționează pe administratori către instrucțiunile specifice pachetului pentru personalizare. Pentru aceste configurări, utilizați interfața sau documentația acceptată pentru pachetul respectiv. Montările persistente de volume și configurația generată pot, de asemenea, să suprascrie o editare manuală unică.
Cum poți confirma că avertismentul este remediat?
- Aplicați modificarea la configurația PHP orientată spre web și reporniți sau reîncărcați serviciul web/PHP relevant.
- Conectați-vă la Nextcloud ca administrator și deschideți Setări > Administrare > Prezentare generală .
- Reîmprospătați pagina și examinați avertismentele de configurare. Confirmați că avertismentul privind limita de memorie PHP a dispărut.
- Executați o operațiune reprezentativă care a declanșat anterior avertismentul, cum ar fi sarcina aplicației afectate, și examinați jurnalele Nextcloud și PHP pentru mesajele de epuizare a memoriei.
Dacă rulați și joburi în fundal Nextcloud prin cron-ul sistemului, verificați separat configurația CLI PHP. Avertismentul orientat spre web poate fi șters în timp ce joburile CLI utilizează în continuare o limită inferioară. Confirmați valoarea CLI cu php --iniși php -ipentru același binar PHP utilizat de comanda cron.
Când ar trebui să ridici valoarea peste 512 milioane?
Activează-l doar atunci când avertismentul a dispărut, dar o sarcină de lucru documentată atinge în continuare limita PHP sau când îndrumările acceptate de o aplicație necesită mai mult. Verifică mai întâi memoria reală a serverului, numărul de lucrători PHP-FPM, memoria bazei de date și alte servicii. Deoarece PHP aplică limita per script, mai mulți lucrători ocupați pot utiliza o memorie substanțială în același timp. Setează o limită măsurată care se potrivește bugetului de memorie al gazdei în loc să utilizezi -1, pe care PHP îl documentează ca neavând limită de memorie.
Dacă avertismentul a dispărut, dar serverul încă încetinește sau procesele sunt închise, verificați memoria sistemului și utilizarea swap-urilor, jurnalele PHP-FPM și jurnalele Nextcloud. Luați în considerare dacă o anumită aplicație sau cerere consumă excesivă memorie. O memorie cache, cum ar fi APCu sau Redis, abordează problemele de cache și performanță; nu înlocuiește setarea PHP memory_limit. Modificați câte un factor pe rând, astfel încât să puteți identifica dacă rezultatul s-a îmbunătățit.
Verificări rapide în funcție de simptom
- Avertismentul rămâne afișat după editarea fișierului php.ini: verificați dacă ați editat fișierul CLI în loc de fișierul Apache/FPM sau dacă o setare a pool-ului îl suprascrie.
- Avertismentul dispare, dar o sarcină cron tot eșuează: verificați fișierul binar CLI PHP și configurația sa separată.
- Serverul web returnează o eroare după repornire: verificați starea și jurnalele serverului web sau ale serviciului PHP-FPM și restaurați copia de rezervă dacă modificarea configurației a cauzat o eroare de pornire.
- Avertismentul dispare, dar gazda rămâne fără memorie RAM: reduceți concurența, adăugați memorie sau identificați procesul care utilizează memoria înainte de a crește și mai mult limita PHP.
- Folosești un container sau un pachet la cheie: schimbă setările PHP acceptate de pachet în loc de fișierul php.ini al gazdei.
Referințe oficiale