Visualizzazione post con etichetta Apache. Mostra tutti i post
Visualizzazione post con etichetta Apache. Mostra tutti i post

giovedì 2 settembre 2010

Apache2 e modulo PHP: visualizzare gli errori nel browser

L'installazione del modulo PHP per Apache2 usa una configurazione un po restrittiva per gli errori, visualizzati solo all'interno del file di log. La visualizzazione degli stessi all'interno del browser non può che velocizzare lo sviluppo dell'applicazione, soprattutto le prime volte (quando carichiamo più volte la pagina a caccia di eventuali errori).
Se avete letto l'articolo precedente sapete allora su quale file agire per modificare tale comportamento. Il file php.ini è strutturato in più sezioni ampiamente commentate. Per quanto riguarda gli errori bisogna cercare all'interno del file le voci error_reporting ed error_display. PHP usa vari livelli di debug per gli errori (anche questi elencati nel file), di default viene assegnata la stringa E_ALL & ~E_NOTICE alla variabile error_reporting. Questo abilita il modulo PHP alla scrittura di tutti egli errori (nel file di log) ad eccezione degli avvisi di warning. Se si verificano tali errori, lo sviluppatore vedrà all'interno del suo browser un'inutile pagine bianca! Per abilitare la visualizzazione di tutti gli errori nel browser occorre aprire il file php.ini con il nostro editor preferito. Ad esempio con:
sudo mousepad /etc/php5/apache2/php.ini
e modificare la riga error_reporting=E_ALL & ~E_NOTICE in error_reporting=E_ALL (questo abilita tutti i livelli di debug solo nel file di log). Per la visualizzazione all'interno del browser va infine modificata la riga error_display=Off in error_display=On. Se il server web è in esecuzione occorre poi riavviarlo: sudo /etc/init.d/apache2 restart. Per mettere alla prova il modulo PHP sulla nuova configurazione vi consiglio di scrivere una pagina contenente almeno un errore: riuscite a leggere nel browser l'errore che viene rilevato?

venerdì 27 agosto 2010

Installazione e configurazione di PHP su Apache server web

Il modo più semplice per provare i nostri script PHP, senza effettuare di continuo l'upload al server, è quello di installare un server web locale! Qualche mese fa ho già affrontato l'installazione di un server web, Apache Tomcat. Per usare il server web assieme al linguaggio di scripting PHP occorre installare e configurare il relativo modulo, vediamo come fare (installeremo da capo il server web e il client MySQL).
L'installazione di tutto l'occorrente può avvenire da riga di comando oppure per via grafica (attraverso il gestore di pacchetti). Con il comando:
sudo apt-get install apache2-mpm-prefork libapache2-mod-php5 mysql-server php5-mysql php5-gd
installiamo:
  • apache2-mpm-prefork: il server web;
  • libapache2-mod-php5: il modulo PHP per Apache2;
  • mysql-server: il server MySQL;
  • php5-mysql: interfaccia MySQL per PHP;
  • php5-gd: modulo GD per PHP5, permette la gestione delle immagini con PHP;
Altre estensioni e moduli PHP hanno generalmente il nome strutturato in questo modo: php5-nome_modulo. Pertanto, con il comando sudo apt-cache search php5- riceviamo una lista di tutti i moduli PHP (quelli presenti nei nostri repository). Al termine dell'installazione ritroveremo nella cartella /etc i file di configurazione che occorre modificare per rettificare l'installazione. La directory /etc/apache2/ raccoglie i file di configurazione del server web. Il file apache2.conf è uno dei file usati dal server per la configurazione dei servizi. Nella prima parte del file è possibile leggere alcune informazione di carattere generale circa l'uso e la struttura dello stesso file. All'interno del file vengono specificate numerose proprietà del server come: la cartella del server web (riga ServerRoot), la proprietà di persistenza per le connessioni (riga KeepAlive) e il numero massimo di connessioni (persistenti) da tenere aperte (riga MaxKeepAliveRequest), la cartella per i file di log (riga ErrorLog) etc.. Vi consiglio di dare uno sguardo a questo file, provate a farlo con il comando: less /opt/apache2/apache2.conf.
Le cartelle mods-available e mods-enabled servono alla gestione dei moduli. La prima contiene i moduli a disposizione del server web, l'altra raccoglie, invece, i link ai moduli attivi. Ogni modulo ha due file: un file con estensione .load utile all'avvio del modulo e un file con estensione .conf utile alla configurazione del modulo. Pertanto, se vogliamo abilitare un modulo aggiuntivo sul server web non ci resta che fare un link simbolico al file .load (e al relativo file di configurazione) nella cartella mods-enabled.
L'esecuzione di script PHP sul server web avviene grazie al modulo php5.load (non dimenticate mai il file di configurazione). Verificate nella cartella mods-enabled la presenza dei collegamenti. Il server web viene avviato, fermato o riavviato con il comando:
sudo /etc/init.d/apache2.2 start|stop|restart
(in alternativa è possibile avviare il server web eseguendo il file binario dalla cartella bin di Apache2). Attenzione, se all'avvio riscontrate un messaggio di warning relativo all'indirizzo locale del server, editate il file apache2.conf aggiungendo la riga: ServerName localhost. In alcuni casi, durante l'avvio, può verificarsi, poi, un errore dovuto ai permessi in scrittura della cartella per i file di log. Se avete letto attentamente le cose che ho scritto finora sapete, allora, in quale file andare a modificare il path. Prestate attenzione, a volte l'errore si verifica per l'assenza della cartella dei file di log! In tal caso è sufficiente crearla laddove essa occorre.
Per testare il modulo PHP scriviamo un semplice documento per la stampa di tutte le informazioni relative al server e al modulo PHP. Aprite un documento di testo e inserite la seguente riga:


salvate il file (con estensione .php) nella DocumentRoot, la cartella con le pagine php dell'applicazione web. Il nome da me usato per la pagina è stato info.php (vi occorrerà fra poco per accedere alla pagina).
Non avete ancora impostato la DocumentRoot? Nessun problema, editate il file /etc/apache2/sites-available/defaul e aggiungere o modificare la riga DocumentRoot facendola puntare alla cartella con le pagine PHP. Fatto?
Riavviamo il server, la pagina precedentemente salvata è adesso accessibile all'indirizzo http://localhost/info.php.