In seguito all'installazione della piattaforma LAMP, l'interprete PHP è già pronto per essere utilizzato. La procedura di installazione provvede infatti ad abilitare il modulo mod-php5 del web server Apache 2 ed a configurare l'interprete PHP con i parametri di default.
Sebbene i parametri di default siano sufficienti per far girare con successo le più comuni applicazioni web, è sempre consigliabile effettuare una revisione dei file di configurazione prima di mettere il server in produzione (cioè prima di consentire l'accesso al server da parte di utenti esterni). Le motivazioni possono essere sintetizzate brevemente in tre punti:
- sicurezza: la configurazione di default lascia attive alcune impostazioni che, seppur utili in fase di sviluppo di una applicazione web, possono compromettere la sicurezza del server. Ad esempio, un hacker potrebbe utilizzare le informazioni di debug per comprendere meglio come la nostra applicazione è strutturata e quali vulnerabilità possiede;
- compatibilità: le applicazioni web ospitate sul server potrebbero richiedere dei parametri diversi da quelli di default per funzionare correttamente. Ad esempio, un'applicazione complessa e pesante avrà bisogno di più memoria per girare correttamente. La quantità massima di memoria utilizzabile da uno script PHP è uno dei parametri che è possibile configurare;
- amministrazione: la configurazione di un server in produzione va documentata in modo chiaro, e tale documentazione va aggiornata quando si effettuano delle modifiche alla configurazione del server. In questo modo è possibile effettuare interventi di manutenzione, sia ordinaria (es. aggiornamenti) sia straordinaria (es. installazione di nuove applicazioni), senza incorrere in brutte sorprese. Nel caso di realtà aziendali medio-grandi, dove diversi amministratori di sistema prestano servizio, è fondamentale che tutti dispongano delle informazioni più aggiornate prima di intervenire su una macchina.
La funzione phpinfo()
PHP mette a disposizione un modo molto semplice per verificare i parametri di configurazioni correntemente usati: la funzione phpinfo(). Questa funzione, invocata in uno script PHP, restituisce in output l'elenco completo dei parametri di configurazione ed i loro valori attuali, indicando anche i moduli opzionali ed i relativi parametri.
Dopo aver effettuato il login sul server, creiamo un nuovo file PHP nella directory principale del sito web, con il comando seguente:
# nano /var/www/info.php
Quindi, digitiamo il codice PHP per invocare la funzione phpinfo()
:
<?php phpinfo(); ?>
Salviamo il file con CTRL + X e quindi Y per confermare.
Per invocare lo script appena creato è sufficiente aprire il browser su un computer connesso alla stessa rete del server e digitare l'indirizzo IP del server, seguito da /info.php (ad esempio, se l'indirizzo IP del server fosse 192.168.1.20, digitare http://192.168.1.20/info.php). Il server dovrebbe rispondere con una pagina simile a quella mostrata di seguito.
Modifica dei parametri di configurazione
Tra le informazioni fornite dalla funzione phpinfo()
è presente anche il percorso della directory contenente i file di configurazione. In ambiente Ubuntu, il file di configurazione principale si trova nella directory /etc/php5/apache2/php.ini. Questo file contiene i parametri di configurazione che l'interprete utilizzerà quando invocato dal web server Apache. Tuttavia, ricordiamo che è possibile invocare l'interprete PHP anche da riga di comando. In questo caso, i parametri di configurazione verranno caricati dal file /etc/php5/cli/php.ini.
Oltre a contenere i parametri di configurazione, il file php.ini contiene anche una sintesi della documentazione ufficiale, con alcune righe di commento (quelle che inziano per ;
) prima di ogni parametro. Esse informano sui possibili valori ammessi dal parametro, la sua funzione ed il valore di default. Ad esempio, per il parametro error_reporting
, che controlla il livello di dettaglio dei messaggi di errore restituiti da PHP, troviamo una sintesi dell'effetto di tale parametro sul sistema e quali siano i valori raccomandati per un sistema di sviluppo e per uno in produzione.
Per modificare il contenuto del file php.ini si può usare un editor di testo come vi o nano. Bisogna ricordare però che le modifiche al file di configurazione non saranno attivate immediatamente. Per renderle attive, è necessario informare il server Apache che la configurazione di uno dei suoi moduli è cambiata, con il comando:
# service apache2 reload
Attenzione: contrariamente a quanto avviene per i file di configurazione di Apache, il comando reload non restituisce alcun errore nel caso in cui il contenuto del file php.ini sia errato. Controllare attentamente le modifiche effettuate al file php.ini prima di ricaricare la configurazione su un server in produzione è fondamentale per evitare errori o addirittura interruzioni di servizio.
Installazione di moduli aggiuntivi
L'interprete PHP è caratterizzato da un'architettura modulare. Ciò permette di estenderne le funzionalità attraverso dei moduli sviluppati da terze parti. Ad esempio, il modulo php5-imagick permette ad uno script PHP di invocare le funzioni offerte dalla libreria ImageMagick per manipolare immagini lato server.
L'installazione di default di PHP su Ubuntu installa i moduli PHP più diffusi. Può succedere, però, che una particolare applicazione richieda un modulo non presente nell'installazione di default. Ad esempio, sebbene php5-imagick sia installato, un'applicazione potrebbe richiedere il modulo php5-gd (basato invece sulla libreria libgd) per manipolare immagini.
Ubuntu distribuisce i moduli PHP aggiuntivi in pacchetti il cui nome inizia per php5-. Nell'esempio di cui sopra, per installare il modulo php5-gd sarà sufficiente digitare il comando:
# apt-get install php5-gd
Per ottenere la lista completa dei moduli php5 disponibili nei repository di Ubuntu, si può usare il comando apt-cache:
# apt-cache search php5
Il comando restituirà l'elenco di tutti pacchetti il cui nome contiene la stringa "php5".
Dopo aver installato un nuovo modulo PHP, bisognerà riavviare il server Apache, con il comando:
# service apache2 restart