Per eliminare l'avviso di Nextcloud "L'OPcache PHP non è configurato correttamente", apri l'avviso completo in Impostazioni di amministrazione → Panoramica, quindi aumenta solo il limite OPcache indicato nella configurazione PHP utilizzata dal server web. Riavvia il servizio PHP corrispondente e controlla nuovamente l'avviso; la sola modifica della configurazione PHP da riga di comando potrebbe non modificare la configurazione utilizzata da Nextcloud.
Ad esempio, se Nextcloud segnala che il buffer delle stringhe interne è quasi pieno, aumentare la dimensione opcache.interned_strings_bufferda 16 a 32 MB è un primo aggiustamento ragionevole, a condizione che il server disponga di RAM sufficiente. Un avviso diverso, relativo agli script memorizzati nella cache o alla memoria condivisa, richiede un'impostazione differente.
Perché Nextcloud visualizza questo avviso relativo a OPcache?
OPcache memorizza il bytecode PHP compilato nella memoria condivisa, riducendo la quantità di compilazione necessaria per le richieste web ripetute. Riserva inoltre spazio per le stringhe internate, consentendo a PHP di riutilizzare stringhe identiche. Queste capacità rappresentano limiti separati, pertanto l'espansione di uno non risolve necessariamente un avviso relativo a un altro.
Secondo la documentazione di ottimizzazione del server Nextcloud 35 , il pannello di amministrazione avvisa quando il limite di dimensione di OPcache supera il 90% della sua capacità allocata. Il messaggio può menzionare specificamente un buffer di stringhe interne quasi pieno, un numero limitato di script memorizzati nella cache o memoria condivisa insufficiente. Questo dettaglio determina la soluzione.
Nextcloud richiede anche opcache.save_comments=1, perché dipende dalla conservazione dei commenti nel codice PHP. Un'estensione OPcache disabilitata o la conservazione dei commenti disabilitata è quindi un problema di configurazione, non semplicemente un problema di dimensionamento della cache.
1. Individuare l'ambiente che necessita di attenzione
Accedi come amministratore, vai a Impostazioni di amministrazione → Panoramica e leggi l'avviso OPcache completo. Annota la direttiva esatta, se ne viene indicata una. Non dare per scontato che ogni avviso OPcache significhi che il buffer delle stringhe internate sia sottodimensionato.
- Il buffer delle stringhe interne è quasi pieno: controlla
opcache.interned_strings_buffer.
- La memoria condivisa di OPcache è quasi piena: controlla
opcache.memory_consumption.
- Script o chiavi memorizzati nella cache che si avvicinano al limite: verificare
opcache.max_accelerated_files.
- OPcache disabilitato o commenti non conservati: controllare
opcache.enablee opcache.save_comments.
2. Individua la configurazione PHP che gestisce Nextcloud
Sui server Debian o Ubuntu che utilizzano PHP-FPM, la configurazione di PHP è solitamente organizzata in base alla versione di PHP e all'API del server. Ad esempio, PHP 8.3 FPM potrebbe leggere i file in /etc/php/8.3/fpm/conf.d/, mentre il modulo PHP di Apache potrebbe utilizzare /etc/php/8.3/apache2/conf.d/.
Per visualizzare i servizi PHP-FPM presenti su un host systemd, eseguire:
systemctl list-units --type=service 'php*-fpm.service'
Verifica i file OPcache applicabili, sostituendo la versione di PHP installata:
sudo ls -l /etc/php/8.3/fpm/conf.d/*opcache*
sudo grep -R 'opcache\.' /etc/php/8.3/fpm/conf.d/
Se non vengono trovati file, controlla le php.iniconvenzioni principali e di packaging della tua distribuzione. Il comando php --iniè utile per identificare la configurazione PHP da riga di comando , ma CLI e PHP-FPM potrebbero caricare impostazioni diverse.
Per Docker o Nextcloud All-in-One, esamina la configurazione PHP all'interno del container Nextcloud e utilizza un metodo di configurazione persistente supportato. La modifica /etc/phpdei file host in genere non configura PHP all'interno di un container; inoltre, la modifica di un file di container generato può essere annullata ricreandolo.
3. Aumentare il limite segnalato senza modificare le impostazioni non correlate
Eseguire un backup del file di configurazione pertinente prima di apportare modifiche. Su un'installazione standard di PHP-FPM su Debian/Ubuntu, un approccio praticabile consiste nell'aggiungere un override locale nella conf.ddirectory FPM di quella versione di PHP. Verificare che questa directory venga effettivamente caricata dall'installazione di PHP-FPM prima di procedere.
Per l' esempio del buffer di stringhe interne , crea o modifica un override locale come /etc/php/8.3/fpm/conf.d/99-nextcloud-opcache.ini:
; Example for a warning about interned strings
opcache.interned_strings_buffer=32
Qui, 32si intendono 32 MB, non 32 byte. Il valore finale deve essere dimensionato in base all'utilizzo effettivo e alla RAM disponibile.
Se l'avviso indica invece un limite diverso, utilizzare l'esempio corrispondente anziché sommare indiscriminatamente tutti e tre:
; Example only: larger shared bytecode cache
opcache.memory_consumption=256
; Example only: allow more cached script keys
opcache.max_accelerated_files=20000
I valori per opcache.memory_consumptionsono espressi in megabyte, mentre opcache.max_accelerated_filesspecifica un limite di chiavi di script. La documentazione ufficiale di PHP OPcache spiega le unità di misura, i valori predefiniti e le possibilità di modifica.
Quando l'avviso indica OPcache disabilitato o commenti mancanti anziché la capacità, verificare invece queste impostazioni:
opcache.enable=1
opcache.save_comments=1
Non spegnere opcache.validate_timestampso prolungare eccessivamente il tempo di esecuzione opcache.revalidate_freqsolo per ignorare questo avviso. Nextcloud avverte che una convalida ritardata della cache può impedire che le modifiche alla configurazione e agli aggiornamenti abbiano effetto tempestivamente.
4. Applica la nuova configurazione
Ad esempio, su un server che esegue PHP 8.3 tramite PHP-FPM, è necessario innanzitutto convalidare la configurazione del servizio, quindi riavviare il servizio corrispondente durante una breve finestra di manutenzione:
sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm
Sostituire 8.3con la versione di PHP-FPM installata e confermare il nome dell'eseguibile e del servizio prima di eseguire uno dei due comandi. Un riavvio interrompe le richieste gestite da quel pool. Su Apache con mod_php, il servizio rilevante è Apache anziché PHP-FPM; per i container, applicare la procedura di riavvio o ricreazione documentata della propria implementazione, preservando la configurazione.
Se il servizio non si riavvia, ripristina la configurazione di backup e controlla il registro degli errori di PHP-FPM o del server web.
5. Se l'avviso persiste, verificare le impostazioni PHP effettive del sito web.
Innanzitutto, ricarica le impostazioni di amministrazione → Panoramica dopo il riavvio dei processi PHP. Se lo stesso avviso persiste, verifica che la direttiva modificata venga effettivamente caricata dal runtime PHP web e non solo dalla CLI. Controlla la presenza di un file caricato successivamente .inio di un override del pool PHP-FPM che sovrascriva il tuo valore.
Su un server sotto il tuo controllo, puoi ispezionare temporaneamente i valori PHP web utilizzando un endpoint diagnostico con accesso strettamente limitato e ini_get()la funzione PHP. Non lasciare mai una phpinfo()pagina pubblica online: potrebbe rivelare ambiente, percorsi, moduli e altri dettagli di configurazione sensibili. Rimuovi immediatamente qualsiasi endpoint diagnostico dopo la verifica.
Per un avviso persistente relativo alle dimensioni, è consigliabile esaminare l'utilizzo effettivo di OPcache in condizioni di traffico normale anziché raddoppiare ripetutamente i valori. La documentazione di PHPopcache_get_status() descrive le statistiche relative a memoria, stringhe interne e script memorizzati nella cache disponibili per un processo PHP in esecuzione.
L'immagine Docker ufficiale di Nextcloud e le implementazioni All-in-One utilizzano impostazioni PHP predefinite; non dare per scontato che le modifiche a livello di host o i valori consigliati da altre installazioni vengano mantenuti. Consultare il repository Docker ufficiale di Nextcloud o il repository ufficiale di All-in-One per il modello di configurazione corrispondente alla propria implementazione.
Verifica che la soluzione abbia funzionato.
Torna alle impostazioni di amministrazione → Panoramica e verifica che l'avviso specifico relativo a OPcache sia scomparso. Apri e ricarica alcune pagine di Nextcloud per assicurarti che l'applicazione risponda ancora normalmente. Se l'avviso ricompare dopo un utilizzo normale, ricontrolla lo stesso limite misurato e la configurazione PHP web effettiva; l'obiettivo è lasciare un margine sufficiente senza assegnare memoria non necessaria a OPcache.