Requisiti per PHP
Alcuni moduli specifici possono avere requisiti particolari riguardanti le estensioni e le configurazioni di PHP oltre a quelle elencate di seguito, quindi si consiglia di consultare la documentazione del modulo.
Versioni PHP supportate
Versione PHP | Supportata da Drupal | Raccomandata per Drupal |
---|---|---|
5.5 | ![]() |
![]() |
5.6 | ![]() |
![]() |
7.0 | Sì, 7.0.8 con Drupal 8.7.0 (nota 2 sotto) | ![]() |
7.1 | Sì | ![]() |
7.2 | Sì, con Drupal 8.5.0 | ![]() |
7.3 | Sì, con Drupal 8.6.4 (nota 1 sotto) | ![]() |
7.4 | Sì, con Drupal 8.8.3 | ![]() |
8.0 | ![]() |
1) Leggi la nota di rilascio per maggiori informazioni sul supporto PHP 7.3.
2) Leggi la nota di rilascio per ulteriori dettagli sulla fine del supporto di PHP 5.
Cosa significa “versione PHP raccomandata”?
Drupal funziona con tutte le versioni PHP supportate. Le versioni PHP raccomandate sono la scelta migliore per sviluppare un sito Drupal, poiché saranno supportate più a lungo. PHP 7 offre inoltre notevoli miglioramenti in termini di velocità e caching.
PHP 5.5, 5.6 e 7.0 hanno raggiunto la fine del ciclo di vita ufficiale alla fine del 2018, e PHP 7.1 l’ha raggiunto il 1º dicembre 2019. (Vedi PHP: versioni supportate per ulteriori informazioni.) Drupal 8 ha terminato il supporto per PHP 5.5 e 5.6 nel maggio 2019 e le nuove versioni richiedono la 7.0.8 o superiore. Si consiglia di aggiornare almeno a PHP 7.2. (Ubuntu 18.04 include PHP 7.2 e Debian stable include 7.3.)
Nota: ciò non influisce su Drupal 7, che rimane compatibile con PHP 5.2.4 e superiori. Verrà pubblicato un annuncio separato se e quando ciò cambierà – vedi Requisiti PHP di Drupal 7.
Estensioni PHP richieste
Le estensioni utilizzate dal core di Drupal sono definite nel file composer.json del core – vedi ad esempio il file per Drupal 8.7.x. Controlla la sezione “require” e le chiavi che iniziano con “ext-”.
Nota: aggiungere un’estensione PHP al sistema, almeno su Linux (e Mac), significa trovare e installare il pacchetto PHP corrispondente tramite il gestore pacchetti. Di solito il nome del pacchetto per un’estensione Foo è “php-foo” o “php7-foo”, ma non sempre. Alcune estensioni fanno parte del pacchetto principale PHP e quindi sono incluse di default.
Estensioni del database
L’estensione PHP Data Objects (PDO) deve essere attivata per installare e far funzionare correttamente Drupal 8. La versione PDO per PECL non è compatibile con Drupal 8 e non può essere utilizzata. Inoltre, deve essere installata e abilitata l’estensione PHP per la connessione al database scelto.
Attualmente, i connettori database supportati da Drupal sono: mysql (l’estensione MySQL originale), mysqli (connettore migliorato per installazioni MySQL più recenti) e pgsql (per PostgreSQL). Nota: PHP 5.x non include più l’estensione mysql di default. Consulta i link sopra per installare e abilitare il connettore scelto. In generale, se installi PDO con supporto MySQL, il connettore corretto sarà già configurato per te.
Estensione XML
L’estensione PHP XML (utilizzata per i blog API, i moduli di Drupal e Ping) è abilitata di default nelle installazioni standard di PHP; la versione di PHP per Windows ha il supporto integrato per questa estensione. L’abilitazione di XML attiva anche PHP DOM, che ora è un requisito di sistema.
Libreria di elaborazione immagini
Una libreria di immagini per PHP, come GD, è un’estensione obbligatoria in Drupal 8 ed è necessaria per manipolare le immagini (ridimensionamento delle immagini utente, moduli di immagini e cache immagini). ImageMagick è anch’essa supportata per manipolazioni di base nel core di Drupal, ma ha un supporto più limitato nei moduli aggiuntivi.
OpenSSL
L’estensione PHP OpenSSL è consigliata per consentire a Drupal di effettuare richieste in uscita tramite HTTPS. Alcune piattaforme forniscono un pacchetto OpenSSL separato, ad esempio php7-OpenSSL.
È in corso anche il lavoro per far sì che il modulo Update Manager di Drupal verifichi la presenza di aggiornamenti utilizzando HTTPS, il che renderebbe questa raccomandazione ancora più stringente, o persino obbligatoria. Vedi l’issue #1538118: Update status does not verify the identity or authenticity of the release history URL e https://groups.drupal.org/node/506128.
JSON
Drupal 8 richiede PHP compilato con supporto JSON. Il supporto JSON è normalmente compilato come parte del core PHP, ma se ricevi errori come:
PHP Fatal error: Call to undefined function Drupal\\Component\\Serialization\\json_encode() in ... core/lib/Drupal/Component/Serialization/Json.php
prova ad aggiungere l’estensione JSON.
cURL
L’estensione PHP cURL è richiesta per il modulo SimpleTest di Drupal 8, nonché per Aggregator e alcuni moduli aggiuntivi. In molte distribuzioni Linux e stack di sviluppo è inclusa di default, ma se la tua configurazione non la include in php.ini (di solito su Windows) o non la installa tramite il gestore pacchetti (di solito su Linux), dovrai farlo manualmente.
Mbstring
L’estensione PHP mbstring fornisce funzioni multibyte specifiche utilizzate per installare Drupal in lingue diverse dall’inglese, nonché per siti multilingue in Drupal. Aiuta a gestire codifiche multibyte in PHP e tratta codifiche basate su Unicode come UTF-8 o UCS-2.
Impostazioni di configurazione PHP
Requisiti di memoria
I requisiti di memoria PHP possono variare notevolmente a seconda dei moduli utilizzati nel tuo sito. La quantità minima necessaria è di 64 MB.
Verranno visualizzati messaggi di avviso se la configurazione PHP non soddisfa questi requisiti. Tuttavia, anche se tali valori possono essere sufficienti per l’installazione predefinita di Drupal, un sito in produzione con molti moduli abilitati potrebbe richiedere più memoria. Tipicamente 128 MB o 256 MB sono comuni in ambienti di produzione. Alcune installazioni possono richiedere molto di più, specialmente nei casi di implementazioni multimediali. Se utilizzi un servizio di hosting, è importante assicurarsi che il provider possa fornire memoria sufficiente per l’insieme di moduli che stai utilizzando o potresti voler implementare in futuro. (Consulta la pagina aumento del limite di memoria PHP nelle FAQ di risoluzione problemi per ulteriori informazioni sulla modifica di questo limite.)
Impostazioni .htaccess
Alcune impostazioni di memoria sono già contenute nel file .htaccess predefinito fornito con Drupal, quindi non è necessario impostarle manualmente. Tuttavia, tieni presente che la configurazione PHP tramite .htaccess funziona solo se:
Usi Apache (o un web server compatibile)
Il file .htaccess è effettivamente letto, cioè AllowOverride All è abilitato nella configurazione principale di Apache (di solito in httpd.conf)
PHP è installato come modulo Apache
In alcuni ambienti di hosting condiviso, l’accesso a queste impostazioni è limitato. Se non puoi modificarle direttamente, chiedi al tuo provider di hosting di configurarle per te.
Altre interfacce
Consulta il manuale PHP per sapere come modificare le impostazioni di configurazione per altre interfacce di PHP.
Xdebug
Se utilizzi Xdebug:
Impostazione: xdebug.show_exception_trace = 0
Motivo: può causare errori durante l’installazione di Drupal.
Usare Xdebug con Drupal 8:
Impostazione: xdebug.collect_params = ?
Motivo: un valore troppo alto di xdebug.collect_params può impedire l’installazione e il corretto funzionamento di Drupal 8.
Impostazione: xdebug.max_nesting_level = 256
Motivo: usare il valore predefinito max_nesting_level = 100 (nelle versioni xdebug <2.3) causa errori su alcune pagine.
PHP da diverse fonti
Drupal è progettato per funzionare con PHP distribuito da PHP.net. Si fa ogni sforzo per garantire la compatibilità con versioni di PHP provenienti da altre fonti, ma ciò avviene solo su base di “best effort”. In particolare, si sa che Suhosin interferisce con alcune funzionalità; inoltre, alcuni sistemi operativi separano i componenti principali in pacchetti diversi.
Dettagli sui requisiti PHP
Consulta la pagina phpinfo() su Drupal.org per sapere come utilizzare Phpinfo per ottenere informazioni dettagliate sul tuo sistema. Ad esempio, Phpinfo ti dirà se hai già un database installato e quali versioni di PHP, MySQL, ecc. sono in esecuzione nel tuo sistema. Phpinfo mostra anche le variabili PHP configurate e molte altre informazioni utili.
Spesso è possibile aggiornare a una versione più recente di PHP fornita con la distribuzione Linux in uso. Consulta la documentazione della tua distribuzione per ulteriori dettagli.
Alcuni punti importanti
Tieni presente le limitazioni di PHP a 32 bit.
Le dipendenze di Drupal basate su Composer sono impacchettate utilizzando PHP 5.5.9. Se utilizzi una versione PHP più recente, puoi eseguire il comando di aggiornamento di Composer per ottenere versioni più compatibili delle dipendenze.
L’Update Manager di Drupal 8 può installare/aggiornare moduli e temi tramite SSH se le librerie necessarie sono installate sul server (su Debian il pacchetto si chiama “libssh2-php”).
Se utilizzi la cache opcode APC con Drupal 8, è richiesta la versione 3.1.13 o superiore di APC.
Se l’opcache integrato è abilitato, l’impostazione opcache.save_comments deve essere abilitata (valore 1, predefinito), altrimenti le annotazioni non verranno salvate/caricate.