Home
» AMMINISTRAZIONE DI RETE
»
Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".
Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".
Se Nextcloud segnala "L'OPcache PHP non è configurato correttamente" , la soluzione giusta non è copiare e incollare un lungo blocco di impostazioni da un vecchio post di un forum. Innanzitutto, identifica quale limite o impostazione dell'OPcache Nextcloud sta contestando, quindi modifica la configurazione PHP effettivamente utilizzata dal tuo server web.
Nella documentazione di amministrazione di Nextcloud 35, OPcache è considerato un importante livello di prestazioni per PHP. Nextcloud afferma che il suo pannello di amministrazione genera un avviso quando il limite di dimensione di OPcache supera il 90% della capacità allocata. Richiede inoltre che i commenti del codice memorizzati nella cache vengano conservati. Il manuale di PHP documenta le direttive pertinenti e i relativi valori predefiniti. Queste informazioni offrono un metodo più sicuro per ottimizzare OPcache: aumentare solo la risorsa limitata, mantenere attivo il comportamento richiesto ed evitare modifiche che complichino gli aggiornamenti, a meno che non vi siano validi motivi per farlo.
L'avviso deve essere considerato un indizio diagnostico: identificare lo specifico vincolo di OPcache prima di modificare i limiti di memoria o di numero di file.
Cosa significa solitamente l'avviso di Nextcloud OPcache
OPcache memorizza il bytecode PHP compilato nella memoria condivisa, in modo che PHP non debba analizzare e compilare gli stessi file dell'applicazione a ogni richiesta. Nextcloud descrive questa funzionalità come un miglioramento delle prestazioni e PHP include Zend OPcache nel core fin dalla versione 5.5.
L'avviso può comparire per più di un motivo. I casi più comuni sono che la capacità di OPcache è quasi piena, OPcache è disabilitato per la SAPI web oppure un comportamento richiesto, come la conservazione dei commenti, è stato modificato. La guida di ottimizzazione corrente di Nextcloud afferma che viene mostrato un avviso di dimensionamento quando il limite di dimensione di OPcache supera il 90% della sua allocazione e richiede esplicitamente opcache.save_comments = 1.
Scegli la soluzione in base all'avvertimento, non un blocco unico valido per tutti.
Situazione
Il miglior primo cambiamento
Scambio
La memoria di OPcache supera la soglia di avviso di Nextcloud.
Aumentare opcache.memory_consumptionmoderatamente
Utilizza più RAM condivisa, ma riduce il turnover della cache.
Le stringhe interne sono quasi piene
Aumentoopcache.interned_strings_buffer
Consuma ulteriore memoria condivisa; l'aumento dei limiti non correlati non apporta alcun vantaggio
Gli slot per script/file nella cache sono quasi pieni.
Aumentoopcache.max_accelerated_files
Una tabella hash più grande utilizza più memoria
OPcache è disabilitato
Imposta opcache.enable=1la configurazione PHP per il web
Normale e consigliato per Nextcloud; verificare la corretta SAPI
opcache.save_commentsera disabile
Impostatoopcache.save_comments=1
Non esiste un motivo valido specifico di Nextcloud per disabilitarlo; Nextcloud richiede che i commenti vengano conservati.
Attualmente PHP elenca valori predefiniti di 128 MB per opcache.memory_consumption, 8 MB per opcache.interned_strings_buffere 10.000 per opcache.max_accelerated_files. Questi valori predefiniti sono punti di riferimento, non target universali di Nextcloud. Un piccolo server personale potrebbe trovarsi bene con valori simili, mentre un'installazione più grande con molte applicazioni potrebbe richiedere più spazio.
Passaggio 1: Conferma quale configurazione PHP utilizza effettivamente Nextcloud
Questo è il passaggio che previene molti tentativi di correzione falliti. Nextcloud documenta che il server web e PHP da riga di comando possono caricare file di configurazione diversi. Sui sistemi di tipo Debian e Ubuntu, i percorsi comuni includono /etc/php/<version>/fpm/php.ini, /etc/php/<version>/apache2/php.ini, e /etc/php/<version>/cli/php.ini.
Esegui il comando php --iniper visualizzare la configurazione della CLI, ma non dare per scontato che sia lo stesso file utilizzato da PHP-FPM o Apache. Per la SAPI web, utilizza una phpinfo()pagina temporanea solo se puoi proteggerla e rimuoverla immediatamente, oppure controlla la configurazione del pool/servizio PHP-FPM e i file dei moduli specifici della distribuzione.
Raccomandazione: se Nextcloud è in esecuzione dietro Nginx o Apache con PHP-FPM, modificare la configurazione OPcache di FPM. Se Apache utilizza mod_php, modificare la configurazione PHP di Apache. Mantenere la configurazione CLI allineata quando i processi in background richiedono lo stesso comportamento, ma ricordare che l'avviso del browser viene generato dal percorso della richiesta web.
Passaggio 2: Modificare il set minimo di direttive OPcache che risolve il problema
Modifica la configurazione di OPcache utilizzata dall'API SAPI web. Aumenta solo la risorsa che presenta limitazioni, invece di copiare ciecamente un preset sovradimensionato.
Di seguito viene riportato un esempio prudente per un server di dimensioni modeste. I valori numerici indicati sono da considerarsi punti di partenza e non garanzie:
Se Nextcloud segnala specificamente che la memoria OPcache è quasi piena, passare da 128 MB a 256 MB può essere un incremento ragionevole quando il server dispone di RAM libera sufficiente. Se invece l'avviso si riferisce a stringhe interne o script memorizzati nella cache, è consigliabile aumentare quel limite anziché solo la memoria. Su un VPS con risorse di memoria limitate, passare direttamente a 512 MB potrebbe ridurre la RAM disponibile per i processi worker di PHP-FPM, il database, Redis e il sistema operativo.
E per quanto riguarda le impostazioni di riconvalida?
La guida di ottimizzazione di Nextcloud attualmente disponibile afferma che PHP, per impostazione predefinita, controlla gli script memorizzati nella cache ogni due secondi per rilevare eventuali modifiche e non raccomanda di modificare questa impostazione predefinita per tutti gli utenti. Aumentare il valore di opcache.revalidate_freqquesta impostazione può ridurre i controlli del filesystem, ma il compromesso è di natura operativa: gli aggiornamenti e le modifiche alle applicazioni config.phppotrebbero richiedere più tempo per essere visibili. Disabilitare completamente la convalida del timestamp è una soluzione più drastica e può lasciare attivo il codice obsoleto finché OPcache non viene svuotato manualmente o PHP non viene riavviato.
Per la maggior parte degli amministratori, è sufficiente ignorare l'avviso opcache.validate_timestampse lasciare opcache.revalidate_freqche le impostazioni rimangano invariate, a meno che non si comprenda il flusso di lavoro di distribuzione. Nextcloud avverte specificamente che un comportamento anomalo dopo gli aggiornamenti può derivare da codice memorizzato nella cache obsoleto quando la convalida è stata modificata.
Passaggio 3: riavviare il servizio PHP corretto
Dopo aver modificato un file INI, riavviare o ricaricare il processo PHP che gestisce Nextcloud. Esempi tipici includono systemctl restart php8.2-fpmPHP-FPM o il riavvio/ricaricamento di Apache quando si utilizza mod_php. Sostituire la versione e il nome del servizio con quelli effettivamente in esecuzione sul sistema.
Questo aspetto è ancora più importante se è stato modificato il comportamento di riconvalida. Il riavvio del servizio corretto garantisce il caricamento della nuova configurazione di OPcache ed elimina le ambiguità relative al bytecode obsoleto.
Passaggio 4: Verificare i valori, ma verificare anche l'API Web.
I controlli tramite riga di comando sono utili per trovare i file INI e confermare la sintassi, ma l'API web SAPI può caricare una configurazione diversa.
Tra i controlli utili da riga di comando si annoverano:
php --ini
php -i | grep -i opcache
Questi comandi possono confermare che PHP riconosce le direttive, ma dimostrano solo la configurazione CLI. Se l'avviso di Nextcloud persiste, confronta la configurazione caricata dall'API Web con il risultato della CLI. Ciò è particolarmente importante sui sistemi che mantengono alberi cli, fpm, e apache2INI separati.
Dopo aver ricaricato PHP, aggiorna Amministrazione > Panoramica. L'avviso relativo a OPcache dovrebbe scomparire una volta che l'API Web utilizza limiti adeguati e le impostazioni richieste.
Aggiorna la panoramica di amministrazione di Nextcloud dopo il riavvio del servizio PHP. Se l'avviso scompare, la configurazione viene letta correttamente dall'API SAPI e la soglia segnalata non viene più superata.
Se il problema persiste, non continuare ad aumentare i valori a caso. Verifica quattro cose in quest'ordine: se hai modificato il file INI corretto, se un altro file INI caricato successivamente sovrascrive la tua impostazione, se il servizio PHP pertinente è stato riavviato e se l'avviso fa riferimento a una risorsa OPcache diversa da quella che hai aumentato.
Quanta memoria OPcache dovresti allocare?
Non esiste un valore ottimale univoco. L'obiettivo ideale è avere un margine di sicurezza sufficiente affinché la cache non si avvicini continuamente ai suoi limiti, senza però compromettere il resto dello stack. Per un VPS di piccole dimensioni, è consigliabile iniziare con un valore prudente e monitorare l'utilizzo della memoria. Per un'istanza con molte applicazioni o un codice PHP più esteso, 256 MB o più potrebbero essere giustificati qualora l'utilizzo effettivo di OPcache dimostri che 128 MB sono insufficienti. Su un server di grandi dimensioni, il dimensionamento della memoria dovrebbe essere valutato insieme al numero di worker di PHP-FPM e ad altri servizi condivisi.
Il confronto pratico è semplice: una maggiore quantità di memoria OPcache può ridurre le operazioni di svuotamento della cache e la ricompilazione, ma una minore quantità di memoria OPcache lascia più RAM disponibile per i processi PHP e i database in esecuzione contemporaneamente. La scelta deve basarsi sull'utilizzo effettivo e sugli avvisi segnalati da Nextcloud, non sul valore massimo supportato dal server.
Errori comuni che fanno persistere l'avviso
Modifica solo PHP da riga di comando: il browser continua a utilizzare PHP-FPM o mod_php.
Aumentare il limite sbagliato: più memoria non risolve il problema di una tabella dei file accelerati piena.
Dimenticare il riavvio: il processo PHP in esecuzione potrebbe conservare i vecchi valori del file INI.
Disabilitazione opcache.save_comments: Nextcloud richiede che i commenti vengano conservati.
Copia di frammenti di configurazione obsoleti: le vecchie guide potrebbero raccomandare impostazioni di riconvalida aggressive che creano problemi durante l'aggiornamento.
Approccio consigliato in base al tipo di server
Server Nextcloud personale di piccole dimensioni: mantieni le impostazioni predefinite di riconvalida, conserva i commenti e aumenta solo il limite che effettivamente supera la soglia. Questo riduce al minimo l'utilizzo della RAM e gli imprevisti operativi.
Server multiutente occupato: monitora il consumo di OPcache e concedi maggiore margine di sicurezza laddove l'avviso dell'amministratore indichi una pressione eccessiva. Coordina la memoria OPcache con il dimensionamento dei worker di PHP-FPM in modo che un'ottimizzazione non crei swapping a livello di sistema.
Hosting gestito o immagine container: innanzitutto, individuate dove si desidera sovrascrivere le impostazioni PHP. La modifica di un file all'interno di un container temporaneo potrebbe comportare la perdita delle modifiche dopo un re-distribuzione, mentre un provider potrebbe esporre valori INI personalizzati tramite il proprio pannello di controllo o la configurazione dell'ambiente.
Controllo finale
Una soluzione corretta si compone di tre parti: il processo PHP web di Nextcloud deve avere OPcache abilitato, il comportamento richiesto deve opcache.save_comments=1rimanere intatto e la specifica risorsa OPcache che era quasi satura ora ha un margine di sicurezza ragionevole. Una volta che queste condizioni sono vere e PHP è stato ricaricato, l'avviso dovrebbe scomparire senza ricorrere ad allocazioni di memoria eccessive o a modifiche rischiose alla convalida della cache.