MegaLab.it
Stampa Articolo
Aperiodico gratuito di informatica
 
20090211120656_622874555_20090211120642_1707738908_Untitled.png

Trasformare il PC in un server HTTP con Apache, PHP, MySQL e Perl

a cura di "Andy94"
14/09/2009 - articolo
Tecniche Avanzate - In questo articolo analizzeremo tutti i passaggi che ci porteranno alla predisposizione di un server di sviluppo per il linguaggio PHP senza utilizzare XAMPP o altri pacchetti.

In questo articolo vedremo come predisporre un server HTTP in locale senza utilizzare alcun pacchetto integrato (si veda XAMPP).

Per infiniti scopi, un web server sul proprio PC è una caratteristica utilissima: si pensi alla semplice condivisione di file o allo sviluppo web occasionale, fino ad arrivare al developer professionista che prova in locale le proprie creazioni prima di renderle pubbliche.

Prima di cominciare, ci prefiggiamo questi obiettivi:

Si tenga conto che, un server HTTP necessita di port-forwarding della porta 80 in TCP, impostazione fondamentale affinché il server possa funzionare. Purtroppo, le istruzioni per aprire una specifica porta sono diverse a seconda del modello di router o modem che utilizzate: per il diffusissimo Alice Gate, fornito in comodato da Telecom Italia, vi rimando alla guida "Aprire porte TCP/UDP su modem-router Alice gate 2 Plus e 2 Plus Wi-Fi" pubblicata su MegaLab.it. Per tutti gli altri modelli, non posso che raccomandarvi la lettura del relativo manuale di istruzioni.

Si tenga presente che molti programmi possono utilizzare la porta 80. Un esempio lampante di questo comportamento è dato da Skype. Generalmente, programmi che hanno questo comportamento consentono di essere istruiti per non utilizzare tale porta, nel caso debba essere destinata ad altri servizi. Prima di installare i pacchetti, darò per scontato che la vostra porta 80 sia aperta ed accetti connessioni.

Indice dei contenuti

Operazioni preliminari

Apache

PHP

MySQL

phpMyAdmin

Perl

Prima di metterci a scaricare a destra e manca, mi sembra doveroso farvi una lista di ciò che ci serve.

Spiegare concetti come quello di server SMTP locale o server FTP locale non è compito di questo articolo. Per brevità di esposizione, vi rimando agli articoli che li trattano singolarmente: rispettivamente "Trasformare il PC in un server SMTP" e "Guida completa: come predisporre un server FTP sul proprio PC".

Sebbene il primo possa non tornare eccessivamente utile nel contesto di quello di cui stiamo parlando, il secondo potrebbe risultare molto comodo. Tuttavia, è a vostra discrezione. Si tenga presente che Apache e PHP sono, se istruiti a dovere, tranquillamente in grado di inviare mail.

Scaricare Apache

Per prima cosa, accediamo al sito ufficiale del prodotto e localizziamo la colonna di sinistra. Ivi troveremo una voce denominata from a mirror, nella categoria Download. Clicchiamoci.

IDE1.png

La pagina vi darà la possibilità di cambiare il mirror da cui scaricare il pacchetto, tuttavia non credo sia necessario, poiché non ho riscontrato problemi nella velocità di download. Dirigiamoci quindi più in basso, dove possiamo scegliere la tipologia da scaricare.

REDO2.png

Per una versione davvero completa vi raccomando il download dell'ultima voce, Win32 binaries including OpenSSL... che potete scaricare cliccando sul nome del file.

Scaricare PHP

Dal sito ufficiale, localizziamo l'header e clicchiamo sul collegamento denominato downloads.

IDE3.png

Verremo indirizzati ad una pagina che contiene una lista di possibili file. Come vedete, è attualmente disponibile la versione 5.3 e veniamo rimandati ad un altro sito per il download dei file binari per Windows. Cliccate quindi su tale link.

IDE4.png

Arriverete a questa pagina che vi consente di scegliere fra le numerose versioni disponibili.

IDE5.png

Vediamo un po' come orientarci: sulla sinistra vi è un riquadro di testo che vi guida sulla versione da scegliere.

REDO6.png

Come vedete l'ultima riga di testo riporta la dicitura Do NOT use VC9 version with apache.org binaries quindi è d'obbligo scaricare la VC6, che trovate sotto ai box relativi alla VC9.

IDE7.png

Per quanto ci riguarda, lo ZIP della versione Thread Safe è quello che ci interessa.

Scaricare MySQL

Scaricare MySQL è la procedura più lunga da seguire, vista la vastità del sito ufficiale. Localizzate anche qui l'header e cliccate sul collegamento Download.

IDE8.png

Verrete indirizzati ad una pagina che vi chiede se volete la versione a pagamento o quella gratuita. Per i nostri scopi, quella gratuita è più che sufficiente (MySQL Community Server, Download).

IDE9.png

La lista di sistemi operativi compatibili è davvero vastissima ma Windows si trova al primo posto, ed è lì che dobbiamo cliccare.

REDO10.png

Adesso scegliamo quale scaricare a seconda della versione di Windows in uso. Nel nostro caso, consiglio di scaricare la versione MSI per Windows a 32bit (o 64 a seconda del vostro sistema operativo).

IDE11.png

Successivamente, ci viene richiesto se desideriamo registrarci oppure no. A vostra discrezione: qualora vogliate semplicemente scaricare il file, cliccate su No thanks, just take me the downloads!.

REDO12.png

Scegliete quindi il mirror italiano, con un download di tipo HTTP o FTP a seconda della vostra preferenza in merito.

IDE13.png

Scaricare phpMyAdmin

Raggiunto il sito ufficiale, localizzate il box verde sulla destra e notate che sono disponibili due versioni.

IDE14.png

Il mio consiglio è quello di scaricare il formato zip cliccando sul collegamento .zip. Se vedete che SourceForge non vi fa partire il download potete cliccare sul link select a mirror e selezionare un server alternativo.

IDE15.png

Scaricare Perl

Raggiungiamo il sito ufficiale e localizziamo l'immagine con scritto download Perl, in alto a sinistra, quindi clicchiamovi.

IDE16.png

Scegliamo la versione ActivePerl for Windows....

IDE17.png

Verremo reindirizzati ad una pagina, che esporrrà un bottone per scaricare l'applicativo.

IDE18.png

Tutto scaricato?

Quando avrete scaricato tutto, dovreste ritrovarvi con questi eseguibili all'interno della cartella dove li avete salvati.

IDE19.png

In questo momento dobbiamo anche porci un altro problema: dove installeremo il nostro server?

Le possibilità sono grossomodo tre:

La scelta è a vostra discrezione. Nel caso di questo articolo, lo installeremo in una partizione distinta.

Nel caso di una cartella, il mio consiglio è di crearla prima di installarle i vari pacchetti. Non ci sono motivazioni particolari: diciamo che è per comodità.

Qualora dobbiate destinare spazio aggiuntivo alla partizione nella quale volete installare il vostro server (come abbiamo fatto per questo articolo), vi consiglio la lettura di "Come ridimensionare le partizioni dei dischi fissi" o l'utilizzo delle funzioni integrate nei sistemi operativi come Windows Vista e Windows 7.

Una volta scelta la strategia, procediamo e iniziamo l'installazione dei vari pacchetti scaricati in precedenza.

Dopo aver scaricato tutti i pacchetti necessari e aver allocato lo spazio per il nostro web- erver, possiamo iniziare ad installare i programmi che lo andranno a comporre. Iniziamo dunque da Apache, avviando l'installazione con un doppio click sul suo eseguibile.

Il processo di setup è il medesimo di qualsiasi altra installazione, eccezion fatta per questa schermata.

IDE20.png

Qui vi vierrà chiesto di inserire dati preliminari in merito al vostro server. Per il momento, basti inserire dati fittizi, visto che poi andremo a modificarli come meglio ci interessa. Per quanto riguarda la porta in ascolto, non posso che consigliare l'utilizzo della 80, come detto in precedenza.

Procedendo, si arriverà alla fase che chiederà se si vuole eseguire una installazione tipica o personalizzata. Scegliete Custom, e arriverete qui.

IDE21.png

Vi consiglio di disabilitare dall'installazione la voce Build Headers and Libraries che vi consente di creare moduli server. Quando avrete concluso, procedete con la fase finale dell'installazione.

Al termine, noterete che si è creata una nuova icona nella barra dell'orologio.

IDE22.png

Nella cartella che si sarà creata all'interno del menu Start, ci saranno molti collegamenti e la struttura sarà simile a questa

IDE23.png

Gli unici collegamenti che ci servono, riuniti in una singola cartella, sono questi.

IDE24.png

Se provate a cliccare nell'icona presente nella barra dell'orologio con il tasto destro e scegliete Open Apache Monitor si aprirà l'applicativo omonimo: quello che costituirà il pilastro di base per contollare il nostro server HTTP.

IDE25.png

Se accedete a http://localhost/ dovreste trovarvi davanti ad uno scenario simile, indice del fatto che l'installazione di Apache è andata a buon fine.

IDE26.png

In caso contrario, molto spesso ci sono problemi di rete e di porte: assicuratevi che tutto sia a posto e che la porta 80 non sia utilizzata da alcun programma, quindi che sia aperta in TCP e abbia il port-forwarding verso il PC che ospita il web server. Assicuratevi altresì che il servizio di Apache sia attivo e che i relativi processi siano in esecuzione.

Prima di poter installare il secondo pacchetto, PHP, dobbiamo però configurare Apache perché funzioni al meglio. Procediamo dunque.

Dopo aver installato Apache, vediamo come configurarlo al meglio.

In verità, il programma funziona già mantenendo inalterate le opzioni di default. Di seguito, andremo a presentare però una serie di personalizzazioni che, sebbene non risultino indispensabili per utilizzare immediatamente l'applicazione, consentono di prendere dimestichezza con il funzionamento del file di configurazione. Raccomando quindi, perlomeno, di leggere e comprendere le meccaniche alla base, ritornando, magari in un secondo momento, per implementarle sul proprio PC.

Il servizio di Apache

Per quanto riguarda il servizio di Apache (monitorabile, come detto in precedenza, dall'Apache Monitor) si sappia che prima era stato installato come servizio Automatico, ovvero che si avviava contestualmente a Windows.

Per portarlo in avvio manuale, apriamo il menu Start e, tramite Esegui (oppure mediante la funzionalità di ricerca, su Windows Vista/7), digitiamo services.msc. Nella finestra che appare cerchiamo il servizio Apache2.2.

IDE27.png

Come vedete dall'immagine precedente, il servizio è avviato come Automatico. Per renderlo manuale, clicchiamo sul suo nome due volte con il tasto sinistro e scegliamo Manuale dal menu a tendina denominato Tipo di Avvio.

IDE28.png

Infine, confermate con OK e chiudete anche la finestra dei servizi. Al successivo riavvio della macchina, Apache dovrà essere avviato manualmente sfruttando i collegamenti conservati in precedenza.

Qualora vogliate anche rimuovere l'icona dalla barra dell'orologio, sarà necessario agire tramite msconfig, disabilitando la voce Apache HTTP Server. In alternativa, è possibile nasconderla utilizzando le apposite funzioni: per maggiori informazioni in merito a quste procedure, rimando all'articolo "Rimuovere le icone dall'Area di notifica".

Configurare Apache - Generale

Fulcro della configurazione di Apache sono i file conf che si trovano nella sottocartella conf di Apache e contengono tutte le più svariate opzioni.

Il più importante, nonché il più vasto, è quello denominato httpd.conf. Gli altri, che controllano funzioni più particolari che vedremo in seguito, si trovano nella sottocartella extra.

Apriamo dunque httpd.conf con un editor di testi. Personalmente, vi consiglio Notepad++, soprattutto anche per ragioni come questa. Vi apparirà davanti un file vastissimo, simile a quello riportato di seguito.

IDE29.png

La struttura del file prevede l'utilizzo dei commenti, che sono indicati con il simbolo cancelletto (#). Una riga che inizia con tale simbolo è un commento, e, al momento dell'utilizzo del file da parte di Apache, non verrà interpretata. I commenti inseriti automaticamente (quelli che quindi trovate la prima volta che aprite il file) servono per farvi capire come utilizzarlo, e sono davvero molto completi.

Da ora in avanti, prima di provare ogni nuova modifica è necessario riavviare il servizio di Apache per far funzionare il tutto. Ricordatevi di questo passaggio, altrimenti le modifiche non verranno considerate.

Di seguito, darò per scontato che prima di testare le configurazioni, abbiate riavviato il servizio utilizzando il collegamento Restart, di cui avevamo parlato poco prima, oppure utilizzando l'Apache Monitor, nella barra dell'orologio.

Ricordatevi che questo file di configurazione richiede l'impiego delle slash (/), ovvero le stesse barre che si usano nel Web. Nella versione di Apache per Windows, tuttavia, si possono usare entrambi i tipi di slash. Personalmente però, ho riscontrato malfunzionamenti occasionali dovuti a questa pratica, quindi il mio consiglio è di usare le slash.

Modificare la porta per il server

Sebbene si usi sempre preferire la porta 80, possono esserci degli scenari in cui tale porta è già utilizzata e non è possibile "liberarla".

Potremmo quindi decidere di aprire una nuova porta, procedendo prima con il port-forwarding di essa, quindi modificando la configurazione di Apache. Sempre agendo da httpd.conf, localizziamo la sezione Listen, simile a questa.

IDE33.png

Vedete la riga Listen che non è commentata? Per cambiare la porta in ascolto basterà semplicemente modificare 80 con il numero della porta che avrete configurato in precedenza. Riavviare quindi il servizio.

Cambiare la porta, come mostrato, richiede però un minimo di attenzione. Quando infatti ci si connette ad un sito, viene automaticamente utilizzata la porta 80 e, nell'eventualità che il server ne utilizzi un'altra, sarebbe necessario specificarla nell'indirizzo.

La procedura è comunque più facile a farsi che a dirsi: si prenda come esempio http://localhost/. Se, per infinite ragioni, si utilizzasse un'altra porta (come ad esempio la 8080) saremo costretti a specificarla nella barra degli indirizzi del browser.

Scrivendo http://localhost:8080 faremo sì che il browser punti la richiesta alla porta 8080 e ci risparmieremo un errore come ad esempio "Tempo scaduto".

Gestire i moduli di Apache

Quando si parla di moduli in Apache, ci si riferisce a particolari add-on che gestiscono funzioni speciali.

Per non sovraccaricare troppo il computer che mantiene i processi in esecuzione, Apache ne carica una parte ridotta. La lista completa dei moduli, caricati e non, si trova sempre all'interno di httpd.conf. Sono riconoscibili dal fatto che le loro regole iniziano con la dicitura LoadModule e sono del tipo LoadModule nomemodulo percorsomodulo/nomemodulo.so. Quando un modulo non è caricato, è facilmente riconoscibile per il fatto che la sua riga è commentata. Per caricare un modulo quindi, sarà sufficiente rimuovere il cancelletto che contraddistingue il commento e riavviare il servizio.

IDE34.png

Nella foto qui sopra, è visibile una parte della lunga lista di moduli disponibili. Vi consiglio di lasciar caricati i moduli che di default lo sono, a meno che non sappiate con certezza che non vi servono.

Al contrario, la lista qui sotto riporta alcuni moduli che potrebbero tornarvi utili.

Per maggiori informazioni inerenti i moduli, download dei suddetti e qualsivoglia documentazione, merita sicuramente un occhio il sito ufficiale dei moduli di Apache.

Aggiungere una riga per caricare un modulo non è difficile: è infatti sufficiente inserire l'struzione LoadModule seguito dal percorso del modulo da caricare. L'analisi delle righe inserite di default è spesso risolutiva per questo genere di cose.

Assegnare un nome al server

Gli utenti più attenti, noteranno che, all'interno del Log di Apache, si crea questa riga ogni qual volta il servizio viene riavviato.

IDE127.png

Per evitare tutto ciò, cerchiamo la direttiva ServerName all'interno del file di configurazione e decommentiamola, quindi modifichiamone il valore in questo modo.

IDE128.png

Modificare la directory del sito

Secondo le convenzioni, si assume la directory htdocs come cartella che conterrà tutti i file del nostro sito. Di default, questa si trova come sottocartella della directory di Apache, ma può essere ricreata in un'altra posizione, per una raggiungibilità migliore.

Supponendo di volerla spostare nella radice del nostro server, creiamo una nuova cartella dal nome htdocs (ma qualunque altro va bene).

Tuttavia, creare la cartella non è sufficiente: dobbiamo anche istruire Apache al fatto che la cartella da cui deve attingere i file del nostro Server è cambiata. Utilizzando httpd.conf localizziamo la sezione DocumentRoot. Con il file di default, l'istruzione dovrebbe trovarsi alla riga 177.

IDE30.png

Modifichiamo la stringa inserendo il percorso assoluto alla nuova cartella. Nel caso sopra citato, la stringa intera diventerà DocumentRoot "G:/htdocs". Salvate il file di configurazione.

IDE31.png

Tuttavia, non è ancora finita. Se si provasse la nuova configurazione adesso, si avrebbe come risultato un errore 403 Accesso negato (Forbidden).

Poche righe più in basso si trova un "blocco" Directory che riporta ancora il vecchio percorso. Anche questo andrà modificato, inserendo il nuovo percorso come sopra. Nel caso sopra citato, il blocco dovrà quindi iniziare con <Directory "G:/htdocs">.

IDE32.png

Salvate il file di configurazione.

Per provare la nuova configurazione, possiamo copiare il file denominato index.html presente all'interno della sottocartella htdocs all'interno di Apache nella nuova directory htdocs. Apriamo nel browser l'indirizzo http://localhost/. Se viene visualizzata la stringa It works!, vuol dire che abbiamo modificato il percorso correttamente.

Volendo, per essere sicuri al cento per cento di aver svolto tutto correttamente, potete cancellare l'indice presente all'interno della cartella htdocs in Apache. Se, dopo aver ricaricato la pagina nel browser appare ancora il testo sopra citato, avete davvero svolto tutto correttamente.

Se il servizio di Apache non dovesse riavviarsi o non dovreste visualizzare nulla nel browser, controllate le slash che avete inserito e la validità dei percorsi.

Abilitare l'utilizzo degli .htaccess

All'interno di Apache, un file htaccess permette di specificare delle regole che avranno la precedenza rispetto a quelle impostate all'interno del già noto httpd.conf. Un file htaccess ha effetto nella cartella in cui si trova e in tutte le relative sottocartelle. Il vantaggio sicuramente più importante è quello di poter utilizzare un file distinto da quello generale di Apache.

Di default, l'utilizzo dei file htaccess non è consentito in quanto tutte le regole vengono generalmente salvate all'interno del file di configurazione già menzionato, oltre agli altri specifici.

Tuttavia, abilitare l'utilizzo di tali file è un passaggio che ritengo essere molto utile, per cui vediamo come proseguire.

La direttiva che blocca l'utilizzo di questi file si trova in httpd.conf all'interno del blocco Directory. Di default, tale blocco dovrebbe cominciare alla riga 187.

IDE35.png

Come vedete, vi è un AllowOverride None che impedisce l'utilizzo dei file. Sostituendo None con All e riavviando Apache, i file htaccess diverranno utilizzabili.

Attenzione: vi sono molteplici blocchi di tipo Directory all'interno del file di configurazione. Basti sapere che la direttiva da modificare sta nel blocco <Directory />, che è univoco in tutto il file.

Utilizzare il mod_autoindex per la visualizzazione delle cartelle

Quando all'interno di una cartella non c'è un file indice, Apache crea una lista di tutti i file che sono contenuti. Tuttavia, in mancanza di regole particolari, l'elenco viene creato seguendo questo schema che, a mio modo di vedere, non è esteticamente gradevole.

IDE36.png

Per fare in modo che Apache crei una lista dei file più curata, dobbiamo abilitare un modulo (che solitamente è già abilitato, ma manca del file di configurazione) dal nome mod_autoindex.so e il relativo file di configurazione, che si trova più in basso.

Localizziamo la parte finale del file di configurazione.

IDE37.png

Togliamo il commento da Include conf/extra/httpd-autoindex.conf, salviamo il file e riavviamo Apache. Adesso i file verranno elencati in questo modo, sicuramente migliore.

IDE38.png

Per personalizzare ulteriormente la visualizzazione possiamo aprire il file di configurazione che abbiamo decommentato in precedenza, all'interno del suo percorso (conf\extra). Apparirà così.

IDE39.png

La riga che controlla la personalizzazione della lista è la numero 15 nella foto qui sopra.

Per fare in modo che la visualizzazione occupi tutta la larghezza dello schermo disponibile, dobbiamo rimuovere l'attributo HTMLTable dalla riga, in modo che diventi così.

IDE40.png

E la visualizzazione della lista diverrà così.

IDE41.png

Siamo pronti per installare PHP?

Molte altre sarebbero le migliorie e i trucchi che si possono applicare ad Apache ma per il momento ci fermiamo qui.

Adesso siamo davvero pronti per installare il secondo pacchetto scaricato, PHP. Dopo la sua installazione configureremo ancora alcune impostazioni di Apache affinché funzioni in collaborazione con il nostro interprete dinamico.

L'installazione di PHP è semplicemente composta dall'estrazione dell'archivio che abbiamo scaricato in precedenza e dalla sua collocazione.

Una volta che avete estratto tutti i file, dovrete spostare la cartella all'interno dello spazio che abbiamo riservato in precedenza e, per comodità, rinominare tale directory in qualcosa di semplice: ad esempio, PHP.

La struttura all'interno del nostro Server dovrebbe assomigliare a qualcosa di simile.

IDE42.png

Prima di configurare Apache però, dobbiamo impostare le variabili d'ambiente affinché accettino l'interprete PHP. Questa non è un'operazione che deve spaventarvi perché, al contrario di quello che potreste pensare, è molto semplice.

Aprite il Pannello di Controllo e selezionate la voce Sistema.

IDE43.png

Nella finestra che appare, selezionate Impostazioni di sistema avanzate e accedete alla tab Avanzate.

IDE44.png

Nella parte bassa della finestra vi è un pulsante dal nome Variabili d'ambiente. Clicchiamovi.

IDE45.png

Nel secondo GroupBox della finestra, dal nome Variabili di sistema c'è una voce dal nome Path.

IDE46.png

Una volta localizzata, facciamo doppio click su di essa e ci troveremo davanti ad una finestra che ci permette di modificare il valore della variabile, come questa.

IDE47.png

Localizzate l'inizio della stringa e aggiungetevi il percorso della cartella di PHP, con le backslash usate da Windows seguito da un punto e virgola. Nel mio caso, dovrò aggiungere G:\PHP;. Una volta fatto dovremo avere una variabile che inizierà così.

IDE48.png

Confermate tutte le finestre premendo in ognuna il relativo pulsante OK e riavviate la macchina. Mi raccomando: il logoff NON è sufficiente, bisogna davvero riavviare la macchina affinché tutto funzioni correttamente.

Una volta tornati a Windows saremo pronti per istruire Apache, quindi configurare PHP al meglio.

Prima di gettarci a capofitto nella configurazione di PHP, riapriamo il file httpd.conf e localizziamo la direttiva DirectoryIndex. Aggiungiamo alla fine della sua riga, separando il tutto con uno spazio, la dicitura index.php. La riga dovrà quindi diventare così.

IDE49.png

Raggiungiamo la fine del file di configurazione e scriviamo le seguenti righe di codice.

Si tenga presente che i percorsi variano a seconda della vostra directory di PHP per cui dovrete modificarli di conseguenza. La fine del file di configurazione sarà quindi così.

IDE50.png

A questo punto, salvate il file di configurazione e riavviate il servizio di Apache.

Il file di configurazione di PHP ha una sintassi diversa rispetto a quello di Apache, essendo un file INI.

In questo caso, i commenti sono indicati da un punto e virgola (;) e appaiono di colore verde in Notepad++. Anche PHP.ini, come il già citato httpd.conf, è molto vasto e ben documentato.

Per ottenerlo, dobbiamo localizzare un file che si chiama php.ini-development e rinominarlo semplicemente in php.ini. Quindi aprirlo con un editor di testi.

IDE51.png

Analizziamo anche qui alcuni suggerimenti utili che potrebbero aiutarci nello sviluppo. Si ricordi che, dopo ogni salvataggio del file di configurazione, si deve riavviare il servizio di Apache.

Abilitare l'utilizzo dei tag brevi e lo stile ASP

L'utilizzo dei tag PHP in forma breve <? e ?> non è supportata di default. Per abilitarla dobbiamo portare a On la direttiva short_open_tag.

IDE52.png

Qualora volessimo anche utilizzare i tag in stile ASP (<% e %>), portiamo a On anche la direttiva asp_tags (poco più in basso rispetto alla direttiva precedente nell'immagine qui sopra).

Abilitare la compressione Zlib

Come per il mod_deflate citato in precedenza, la compressione Zlib permette di inviare pagine compresse ai browser. Si ricordi anche che, in caso di pagine che eseguono upload, questo potrebbe generare problemi.

Localizzate la direttiva zlib.output_compression e cambiate Off in On.

IDE53.png

La gestione degli errori di PHP

Questa sezione meriterebbe, a causa della sua vastità, un intero articolo. Tuttavia, basti sapere che PHP di default mostra tutti gli errori (Fatal, Strict, Parse, Notice tanto per citare i più comuni). Nel caso vogliate modificare tale comportamento e nasconderne alcuni, dovete modificare la sintassi della direttiva error_reporting, seguendo gli esempi forniti nei commenti della sezione.

IDE125.png

Una gestione degli errori ottimale per PHP si ottiene installando XDebug: ne abbiamo parlato nell'articolo "Introduzione e installazione di XDebug: debugger PHP".

Le estensioni in PHP

Come in Apache esistono i moduli, in PHP esistono le estensioni. Prima di utilizzarle però dobbiamo indicare a PHP dove trovarle. Localizziamo quindi questo blocco.

IDE56.png

E trasformiamolo in qualcosa come questo, a seconda del vostro percorso di tale cartella.

IDE57.png

A questo punto, possiamo abilitare alcune estensioni molto utili nel blocco Dynamic Extensions (come detto in precedenza, per caricare un'estensione è sufficiente decommentarla).

IDE58.png

Il mio consiglio è quello di abilitare:

Altre estensioni le potete abilitare qualora vi servano. Ogni estensione ha la sua documentazione e articoli che ne parlano, quindi non avrete problemi.

La data e l'ora in PHP

Di default, PHP mostra tutti i tipi di errori, se è configurato per visualizzarli.

Di conseguenza, quando installeremo phpMyAdmin o utilizzeremo una qualunque delle funzioni che generano o gestiscono, date e orari, riceveremo l'avvertimento It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. seguita da altri dettagli.

Per evitare questo comportamento, possiamo impostare il timezone di default, ovvero il nostro. Localizzate la direttiva date.timezone e decommentatela, quindi inserite la dicitura Europe/Rome.

IDE121.png

Le email in PHP

Per inviare email, PHP ha bisogno del nome del server SMTP utilizzato nel PC corrente. È lo stesso che utilizzate nel vostro account di posta principale. Per inserirlo, localizzate il blocco [mail_function] e modificate la stringa SMTP inserendo quanto sopra descritto.

IDE55.png

Ho preferito dedicare un'altra pagina a PHP proprio per la sua vastità. Una volta ultimate le modifiche della pagina precedente, bisogna salvare il file di configurazione e riavviare Apache.

A questo punto, non ci resta che realizzare la nostra prima pagina PHP.

Creiamo un nuovo documento di testo all'interno della nostra cartella del sito e rinominiamolo in test.php. Aprendolo con Notepad++, digitiamo <?php phpinfo(); ?>.

Salviamo il file e apriamolo nel nostro browser, digitando http://localhost/test.php.

Se vi appare qualcosa di simile, è già un segnale del fatto che avete installato PHP correttamente.

IDE59.png

Se avete abilitato tutte le estensioni che vi ho consigliato prima, scorrendo la pagina generata troverete tutte le impostazioni di ognuna.

Questo è un esempio.

IDE60.png

Tale tabella non verrebbe visualizzata se non fossero caricate le estensioni relative a MySQL.

A questo punto, siamo arrivati all'installazione del nostro gestore database: MySQL.

Quando arrivate a questa schermata, scegliete Custom.

IDE61.png

In questa fase, potete scegliere quali componenti installare.

IDE62.png

Qualora non vi serva, potete disabilitare l'installazione della Documentation, perché di fatto contiene solo il manuale del programma.

Dopo poche conferme, inizierà l'installazione.

IDE63.png

Durante l'installazione appariranno due schermate pubblicitarie, che potrete tranquillamente ignorare.

Poco dopo, apparirà una schermata come questa, che darà l'inizio ad una delle più lunghe configurazioni che abbiate mai visto.

IDE64.png

In questa schermata, vi consiglio di disabilitare la seconda casella. Premere quindi Finish per proseguire.

Ad ogni fase della configurazione, una volta completati i dati richiesti, premere sempre Next.

IDE65.png

Scegliere Detailed Configuration per poter configurare tutte le opzioni disponibili in questa istanza.

IDE66.png

Scegliere Developer Machine, che ottimizzerà la configurazione per l'impiego su macchine di sviluppo

IDE67.png

Scegliete Multifunctional Database, così da poter eseguire qualsivoglia operazione su di essi.

IDE68.png

Nella schermata qui sopra, vi consiglio di mantenere le impostazioni consigliate.

IDE69.png

Nella fase qui sopra, sta a voi stabilire quante connessioni simultanee sono previste nei vostri database. Se non avete necessità particolari comunque, potetete mantenere la scelta proposta di default.

IDE70.png

Anche qui sopra, le configurazioni di default proposte sono perfette. L'eccezione per il Firewall non è necessaria.

IDE71.png

Nella fase qui sopra, il mio consiglio è quello di scegliere Best Support For Multilingualism per far sì che il sistema gestisca al meglio i caratteri accentati.

IDE72.png

Il servizio di MySQL non richiede iterazione da parte dell'utente. È a vostra discrezione stabilire se deve avviarsi in autonomia, assieme a Windows, o se dovete abilitarlo manualmente (vi ricordo che dovrete agire dai servizi o aprendo l'eseguibile dedicato).

IDE73.png

Il mio consiglio è di configurare il passagio precedente come da immagine qui sopra. L'account anonimo potrebbe causare problemi di sicurezza, quindi consiglio di non crearlo.

A questo punto, potete premere Execute per impostare tutta la configurazione di prima.

IDE74.png

Quindi Finish quando ha finito la procedura. La configurazione verrà chiusa, e sarete pronti per testare il tutto.

Per essere certi che l'installazione di MySQL sia andata a buon fine e la configurazione sia funzionante, possiamo creare una pagina PHP contenente il codice per la connessione a MySQL.

Create dunque un nuovo file di testo e rinominatelo con estensione PHP, quindi inserite questo codice.

IDE75.png

Mi raccomando di sostituire password con la password del vostro utente di root, altrimenti riceverete un errore simile a questo.

IDE76.png

Se viene restituita pagina bianca e avete configurato PHP affinché visualizzi gli errori, complimenti: avete installato correttamente MySQL e PHP riesce a connettersi ad esso.

A questo punto, per non trovarsi a gestire i database di MySQL tramite la linea di comando, installeremo phpMyAdmin, una web application che ci aiuterà a gestire i database tramite un'interfaccia accessbile mediante il browser.

Estraete l'archivio di phpMyAdmin e copiate la cartella dello script all'interno della directory del sito (htdocs nel mio caso). Rinominatela in qualcosa di più semplice, come ad esempio phpmyadmin o pma.

A questo punto, aprite http://localhost/phpmyadmin/ nel vostro browser web e troverete qualcosa come questo.

IDE77.png

A questo punto però non siamo pronti per autenticarci in quanto dobbiamo configurare il nostro phpMyAdmin: il tutto nella prossima pagina.

Raggiungete quindi la pagina http://localhost/phpmyadmin/setup (cambiate phpMyAdmin a seconda del nome della directory dello script) e troverete qualcosa di simile.

IDE78.png

Come vedete, ci sono delle notifiche che dobbiamo risolvere prima di procedere.

Creazione della cartella di configurazione

IDE79.png

La notifica qui sopra ci chiede di creare una cartella di configurazione, dal nome config, all'interno della cartella di phpMyAdmin. Una volta creata, se ricarichiamo la pagina, la notifica scomparirà.

Abilitare la compressione Bzip

IDE80.png

Lo script ci richiede l'abilitazione della libreria Bzip2 che ha la sua dll all'interno del file php.ini (riga extension=php_bz2.dll), che andremo a decommentare.

IDE81.png

Una volta riavviato Apache e ricaricato la pagina, la notifica sarà scomparsa.

Abilitare la connessione sicura SSL (facoltativo)

IDE82.png

Per evitare che le password vengano trasmesse in chiaro, lo script ci consiglia l'abilitazione delle connessioni SSL, tramite un modulo di Apache.

Prima di procedere con ogni altra operazione, è necessario inserire all'interno della nostra distribuzione di Apache (precisamente nella cartella bin), il file openssl.cnf che troveremo all'interno della cartella conf. Una copia di tale file sarà quindi la prima operazione da eseguire. Se il file non è disponibile, potete trovarne una copia qui (create un file di testo e rinominatelo, cambiando anche l'estensione).

Apriamo il file httpd.conf e localizziamo la riga LoadModule ssl_module modules/mod_ssl.so. Togliamo il cancelletto, in modo da decommentarla.

IDE83.png

Poco più in basso, localizziamo anche la riga Include conf/extra/httpd-ssl.conf e decommentiamola.

IDE84.png

A questo punto possiamo salvare il file di configurazione, ma non riavviamo Apache perché manca ancora il certificato. Aprite il Prompt dei Comandi (Start, Esegui, cmd) e raggiungete il percorso della sottodirectory bin in Apache mediante il comando cd (nel mio caso G:\Apache\bin).

Digitate openssl req -config openssl.cnf -new -out localhost.csr -keyout localhost.pem e date Invio. Inserite la password quando vi viene richiesta. La password da scegliere va ricordata fino al termine di questa procedura ed è a vostra discrezione.

Confermando con Invio ogni fase, arriviamo ad alcune richieste.

Se non volete inserire dei dati, non lasciate il campo vuoto ma compilatelo con un punto (.).

Nel mio caso, la configurazione sarà rappresentata dall'immagine qui sotto.

IDE85.png

A questo punto, digitate openssl rsa -in localhost.pem -out localhost.key e premete Invio. Digitate sempre la stessa password di prima e cliccate su Invio. Quando la riga di comando torna disponibile e appare la dicitura writing RSA key scrivete openssl x509 -in localhost.csr -out localhost.cert -req -signkey localhost.key -days 365 seguito da Invio.

Chiudete la finestra dei comandi e localizzate la cartella bin di Apache. Come vedete, vi sono dei file con estensione diversa che si chiamano localhost.

IDE86.png

Spostiamo questi file all'interno della sottocartella ssl nella cartella conf (ad esempio G:\Apache\conf\ssl), che dovrete creare. Una volta spostati tutti i file, aprite con un editor di testi la configurazione SSL di Apache, ovvero il file httpd-ssl.conf che si trova nella sottocartella extra, in conf.

Localizzate la riga SSLCertificateFile e notate che ve ne sono due, uno commentato e uno no. Modificate il percorso di quello non commentato, in modo che punti al file localhost.cert. Nel mio caso, inserirò il percorso G:/Apache/conf/ssl/localhost.cert.

IDE87.png

Poco più sotto, modificate il percorso della chiave SSLCertificateKeyFile in modo che punti al file localhost.key. Nel mio caso, inserirò questo percorso.

IDE88.png

Salvate il file di configurazione e riavviate Apache. Ritornate alla pagina di configurazione di phpMyAdmin e cliccate sul collegamento this link che vi reindirezzerà alla stessa pagina, filtrata tramite il protocollo HTTPS. Il browser, se usate Mozilla Firefox, vi risponderà con un messaggio come questo.

IDE89.png

Prima di procedere, dovrete accettare il certificato.

Una volta accettato, se avete modificato la directory del sito, vi verrà restituito un errore 403 (Forbidden). Questo perché il file di configurazione del mod_ssl di Apache ha le sue direttive proprietarie, che non abbiamo modificato. Localizzate la direttiva DocumentRoot all'interno del blocco <VirtualHost _default_: 443> e modificatene il percorso in modo che punti alla vostra directory pubblica. Nel mio caso, modificherò la stringa così.

IDE90.png

Al solito, salvate e riavviate il servizio di Apache. Quindi ricaricate la pagina dal browser. Come vedete, se visionate il certificato troverete tutte le informazioni che avete inserito durante la procedura di prima.

IDE91.png

A questo punto è rimasta una sola notifica, che scomparirà dopo che avremo configurato lo script.

A questo punto, torniamo nella nostra configurazione di phpMyAdmin e clicchiamo sul pulsante Nuovo Server.

Impostazioni di base

IDE92.png

Le uniche opzioni che meritano attenzione sono:

Una volta conclusa la configurazione per questa tab, non è necessario premere Salva, ma è sufficiente procedere con la seconda tab.

Signon login options

IDE93.png

In questo caso, prestiamo attenzione a:

Una volta conclusa la configurazione per questa tab, non è necessario premere Salva, ma è sufficiente procedere con la terza tab.

Configurazione del server

IDE94.png

Per quanto riguarda questa scheda, prestate attenzione a questi valori se non sono impostati come da immagine qui sopra.

Una volta conclusa la configurazione per questa tab, non è necessario premere Salva, ma è sufficiente procedere con la quarta ed ultima tab.

Database di PMA

IDE95.png

Personalmente, consiglio di lasciare tutti i campi vuoti in questa sezione.

Qualora invece vogliate utilizzare la funzionalità, potete configurare, utilizzando i valori di default proposti (inseriti automaticamente al click delle rispettive matitine), e configurarlo affinché utilizzi le credenziali del vostro utente root.

Una volta configurate le opzioni richieste, clicchiamo sul pulsante Salva e arriveremo ad una pagina come questa, che ci farà capire che abbiamo configurato phpMyAdmin per lavorare con il server localhost.

IDE96.png

Nella prossima pagina configureremo le opzioni generali di phpMyAdmin.

Una volta che vi trovate davanti ad una videata simile a quella dell'ultima immagine della pagina precedente, potete procedere con la configurazione generale di phpMyAdmin. Anche qui, non è necessario salvare ad ogni cambiamento di tab ma è sufficiente salvare prima di cliccare su un altro collegamento della barra di sinistra.

Caratteristiche

Cliccate sul collegamento denominato Caratteristiche.

Importa / esporta

IDE97.png

Le prime due variabili consentono di salvare in specifiche cartelle i file importati ed esportati. Personalmente, consiglio di non utilizzare la funzionalità, per motivi di sicurezza. Se volete utilizzare le compressioni, accertatevi di abilitare anche le estensioni nel file PHP.ini (php_zip.dll e php_bz2.dll)

Sicurezza

IDE98.png

Il primo campo è una password che utilizzate per crittografare il cookie di accesso qualora sia impostata l'autenticazione tramite questo metodo.

Vi consiglio, se avete abilitato le connessioni crittografate, l'abilitazione di Force SSL connection.

SQL queries

IDE99.png

La configurazione proposta è sufficiente, ma se non desiderate molte conferme potete disabilitare Confirm DROP queries. Altresì, se desiderate uno storico delle query effettuate, potete utilizzare Permanent query history.

Other core settings

IDE100.png

In questa sezione potete impostare altri dati di sistema, non molto rilevanti per il funzionamento dello script.

Frame di navigazione

Cliccate sul collegamento denominato Frame di navigazione.

Frame di navigazione

IDE101.png

In questo caso potete impostare opzioni di mera estetica, che dipendono interamente dalle vostre preferenze personali.

Servers

IDE102.png

Se lavorate con un solo server (localhost) potete disabilitare entrambe le caselle.

Databases

IDE103.png

La configurazione proposta di default è sufficiente. Ciò che viene considerato in questa sezione è la mera visualizzazione dei database.

Tabelle

IDE104.png

Anche qui, come sopra, l'utente può scegliere l'aspetto grafico delle tabelle.

Main frame

Cliccate sul collegamento denominato Main frame.

Avvio

IDE105.png

In questa sezione potete scegliere quali informazioni visualizzare nella prima istanza di phpMyAdmin. Nel mio caso, onde evitare di creare sempre pagine per visualizzare la configurazione di PHP, ho abilitato la variabile Show phpinfo() link.

Browse mode

IDE106.png

In questa sezione potete configurare l'aspetto della visualizzazione. Personalmente, non sapendo mai quante righe posso trovare in una tabella e volendo sempre visualizzarle tutte, ho abilitato Allow to display all the rows.

Edit mode

IDE107.png

In questo caso potete impostare la grandezza degli elementi di edit (textarea) e altri valori. La configurazione proposta di default è sufficiente.

Tabs

IDE108.png

In questo caso potete scegliere quali sezioni visualizzare in casi specifici. Non conoscendo a priori l'output generato dai file proposti negli elenchi, ho accettato la configurazione di default.

SQL Query box

IDE109.png

Per mia curiosità personale, ma anche per sfruttare al massimo le funzionalità offerte ho abilitato tutte le caselle.

Importa

Cliccate sul collegamento denominato Importa.

IDE110.png

In questo caso la configurazione di default è sufficiente.

Esporta

Cliccate sul collegamento denominato Esporta.

IDE111.png

In questa sezione ritengo siano degne di nota queste variabili:

Conclusione

Salvate il tutto e ritornate alla pagina principale. Cliccate anche qui sul pulsante Salva, quindi localizzate in Esplora risorse la cartella config all'interno della directory di phpMyAdmin.

Spostate quel file di configurazione all'interno della cartella principale dello script e cancellate la cartella config. A questo punto siete davvero pronti per utilizzare phpMyAdmin.

Abbiamo finito di configurare phpMyAdmin però a questo punto si presenta un altro problema. Noi abbiamo inserito lo script all'interno della directory pubblica del nostro server quindi, qualora questa fosse priva di indice, noi vedremmo la sua cartella.

IDE122.png

Chiunque può accedervi dunque, previa conoscenza della password dell'utente root. Per evitare che venga visualizzata questa cartella, applicheremo la tecnica documentata qui sotto.

Inserire un Alias

Delle due opzioni qui presentate, questa è sicuramente la più semplice e veloce da realizzare.

Di fatto, sposteremo la cartella di phpMyAdmin al di fuori della directory pubblica del Server, ma raggiungendo l'indirizzo http://localhost/phpmyadmin/ non riceveremo un errore 404 (Not found). Come? Semplice, istruiremo Apache di modo che accetti anche questo indirizzo, prendendo i contenuti da visualizzare da una cartella che si trova all'esterno della directory pubblica. Il tutto utilizzando un Alias.

Aprite httpd.conf, il file di configurazione di Apache e localizzate il termine del documento. Aggiungete le seguenti righe di codice.

In modo che il documento termini come segue.

IDE123.png

Ovviamente potete modificare, nella seconda riga, la parola mysql con una di vostro gradimento. Tale parola sarà il nome della directory fittizia (l'Alias, per l'appunto) che vi permetterà di accedere a phpMyAdmin. Anche il nome stesso della directory può essere utilizzato.

Salvate il file di configurazione e accedete tramite Esplora Risorse alla directory di phpMyAdmin e spostatela al di fuori di htdocs portandola nello spazio radice del vostro Server infine riavviate Apache.

Come vedete, la cartella sarà scomparsa dalla lista ma l'accesso a /mysql non porterà errori di sorta.

IDE124.png

Questo passaggio è facoltativo: vi consiglio di installare Perl solo se sapete di averne realmente bisogno.

Avviate il file di installazione di Perl e, quando raggiungete questa fase, disabilitate l'installazione della Documentation e degli Examples.

IDE112.png

In questa fase, lasciate selezionate le opzioni di default.

IDE113.png

L'installazione di Perl è quindi completata dopo alcune conferme.

Configurazione di Apache per Perl

A questo punto, come abbiamo fatto anche per PHP, dobbiamo istruire Apache sul fatto che Perl è disponibile.

Aprite il file httpd.conf (il solito file di configurazione di Apache) e cercate la riga che contiene Options Indexes FollowSymLinks (dovrà risultare una sola occorrenza).

IDE114.png

Separando con uno spazio quanto già presente, aggiungete la dicitura ExecCGI, in modo che la stringa finale risulti così.

IDE115.png

Tuttavia, con questa configurazione abbiamo abilitato l'esecuzione dei file scritti in Perl solamente all'interno della cartella cgi-bin, sottodirectory di Apache.

Il nostro scopo è quello di abilitare l'esecuzione dei file in tutte le cartelle pubbliche del nostro Server, per cui dovremo attuare ancora qualche modifica. Cercate la dicitura AddHandler cgi-script .cgi e decommentatela (rimuovete il cancelletto).

IDE116.png

Tuttavia, Perl non interpreta solo i file con estensione cgi ma anche quelli in formato pl. Modificando la riga in AddHandler cgi-script .pl .cgi avremo supporto anche a queste estensioni.

IDE117.png

A questo punto, la direttiva che specifica l'Alias per la cartella cgi-bin ovvero quella in cui dovrebbero risiedere tutti i file scritti con questo linguaggio non è più necessaria, quindi la commenteremo. Localizzate la riga che inizia con ScriptAlias e commentatela in questo modo.

IDE118.png

Test di Perl

Adesso siamo pronti per testare la nostra installazione di Perl, ma prima è necessario fare un altro chiarimento.

Scoprire il percorso di Perl

La sintassi di Perl vuole che all'inizio di ogni file vi sia il percorso del interprete che, ovviamente, varia per ogni computer.

Il nostro obiettivo è quello di indicare l'eseguibile perl.exe, che si trova all'interno della cartella bin, sottocartella della principale Perl.

Prendendo come esempio la mia installazione: avremo un percorso come G:/Perl/bin/perl.exe. A questo percorso, dovremo anteporre i caratteri #!.

Tuttavia, il percorso per raggiungere l'interprete può essere specificato anche mediante altre sintassi (comprensive dei due caratteri sopra citati): .

Scrittura di un file di test

A questo punto possiamo testare davvero la nostra installazione. Partendo da una delle possibili sintassi sopra specificate, creiamo un file che andremo a chiamare test.cgi all'interno della nostra directory pubblica.

Apriamo il file con il nostro editor di testi e inseriamoci le seguenti righe di codice.

Ricordatevi che il percorso specificato nella prima riga varia a seconda della vostra installazione di Perl.

IDE119.png

Salvate il file appena creato e raggiungetelo tramite l'indirizzo http://localhost/test.cgi. Se vi appare una pagina come questa, avete configurato Perl correttamente.

IDE120.png

#! G:/Perl/bin/perl

Print "Content-type: text/HTML\n\n";

Print "Se vedi solo questa riga sei riuscito a configurare Perl grazie alla guida di MegaLab.it";

MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .

Copyright 2008 MegaLab.it - Tutti i diritti sono riservati