Capitolo 1
Installazione
Questo libro intende farvi da guida nel percorso che
vi consentirà di andare oltre il mondo statico delle
pagine web create con tecnologie lato client quali
HTML, CSS e JavaScript. Esploreremo il mondo dei
siti web basati su database e scopriremo la grande varietà di strumenti, concetti e possibilità che si aprono
entrando nel mondo del web dinamico.
Se soffrite di vertigini, non guardate verso il basso!
Prima di iniziare a creare il primo sito web dinamico,
è necessario raccogliere gli strumenti necessari. In
questo capitolo mostreremo come scaricare e installare i due pacchetti software richiesti. Indovinate
quali sono? Suggerimento: i loro nomi si leggono
nella copertina di questo libro. Si tratta naturalmente
di PHP e MySQL.
Se siete abituati a creare siti web con HTML, CSS e
magari anche un tocco di JavaScript, probabilmente
avete familiarità con le operazioni di upload dei file
del sito su un apposito spazio. Potrebbe essere un
servizio di hosting web a pagamento, uno spazio offerto dal vostro provider (ISP, Internet Service Provider),
o anche un server web messo in piedi dal reparto
IT dell’azienda per cui lavorate. In ogni caso, una
volta copiati i file sulla destinazione, un programma
denominato server web è in grado di localizzarli e
inviarli quando sono richiesti da un browser web
come Internet Explorer, Google Chrome, Safari o
Firefox.Tra i più noti e comuni software di server web
vi sono Apache HTTP Server (Apache) e Internet
Information Services (IIS).
PHP è un linguaggio di scripting lato server. Potete considerarlo come una sorta di plugin per il server web
libro_php.indb 1
Sommario
Un server web personale
Installazione su Windows
Installazione su Mac OS X
Installazione su Linux
Che cosa chiedere
al provider di hosting web
Il primo script PHP
La cassetta degli attrezzi
è piena, le mani
sono sporche
9/3/2012 6:25:53 PM
2
Capitolo 1
che ne estende le funzioni, dandogli la possibilità di fare molto più che inviare copie
dei file richiesti dai browser.
Una volta installato PHP, il server web può eseguire piccoli programmi (chiamati script
PHP) che sono in grado di svolgere compiti quali la lettura di informazioni aggiornate
da un database e il loro utilizzo per generare una pagina web “al volo” prima di inviarla
al browser che l’ha richiesta. Buona parte di questo libro è dedicata alla scrittura di script
PHP che fanno proprio questo.
PHP può essere scaricato e utilizzato in modo del tutto gratuito. Affinché gli script
PHP possano recuperare informazioni da un database, è ovviamente necessario avere a
disposizione un database. E qui entra in gioco MySQL, un sistema di gestione di database
relazionale o RDBMS (Relational DataBase Management System). Vedremo più avanti il
suo ruolo e come funziona; in breve possiamo anticipare fin d’ora che si tratta di un
programma in grado di organizzare e gestire molte informazioni in modo efficiente,
tenendo traccia di tutti i “pezzi” e di come sono relazionati tra loro. MySQL inoltre
facilita notevolmente l’accesso alle informazioni mediante linguaggi di scripting lato
server quali PHP, e come PHP è completamente gratuito per la maggior parte degli usi.
Questo capitolo mostra come impostare un server web dotato di PHP e MySQL, con
istruzioni passo passo che funzionano su sistemi Windows e Mac OS X recenti. Gli utenti
di sistemi Linux possono consultare l’Appendice A, dove troveranno istruzioni adatte a
installazioni più personalizzate di quella descritta qui (sospettiamo che la maggior parte
degli utenti di Linux preferisca procedere in quel modo).
Un server web personale
Se siete fortunati, il vostro server web attuale dispone già di PHP e MySQL. La maggior
parte dei server web ne dispone, ed è proprio questa una delle ragioni per cui PHP
e MySQL sono così diffusi. Se il vostro host web dispone di PHP e MySQL, potrete
pubblicare il vostro primo sito web basato su database senza la necessità di cercare un
provider che supporti le necessarie tecnologie, tuttavia dovrete comunque installare PHP
e MySQL, perché vi serve un vostro server web con PHP e MySQL per poter collaudare
il sito prima di renderlo pubblico su Internet.
Quando si sviluppano siti web statici, basta caricare i file HTML direttamente nel browser
per visualizzarli, senza la necessità di un server web, dato che i browser sono in grado
di leggere e interpretare il codice HTML da soli. Quando si tratta di siti web dinamici
realizzati con PHP e MySQL, invece, il browser da solo non ce la fa. I browser web non
sono in grado di interpretare gli script PHP; questi infatti contengono istruzioni destinate
a un server web in grado di eseguirle al fine di generare il codice HTML interpretabile
dai browser. Perciò, oltre al server web che ospiterà il sito una volta che avrete deciso
di renderlo pubblico, avete bisogno anche di un vostro server web privato da utilizzare
nella fase di sviluppo.
Se lavorate per un’azienda dotata di un reparto IT disponibile, forse avete già a disposizione un server web di sviluppo. Solitamente si lavora sui file del sito memorizzati su
una unità di rete ospitata da un server web interno che può essere utilizzato a scopo
di sviluppo in tutta sicurezza. Quando si è pronti per pubblicare il sito, si copiano i file
dall’unità di rete al server web pubblico.
libro_php.indb 2
9/3/2012 6:25:53 PM
Installazione
3
Se avete la fortuna di lavorare in un ambiente di questo tipo, potete saltare la maggior
parte di questo capitolo, ma dovrete comunque porre alcune domande al personale del
reparto responsabile per il server di sviluppo, descritte nel paragrafo “Che cosa chiedere
all’host web”.
Ecco perché vi serviranno alcune informazioni importanti quando inizierete a utilizzare
il supporto per PHP e MySQL così gentilmente offerto.
Installazione su Windows
In questo paragrafo spieghiamo come iniziare a eseguire un server web configurato con
PHP e MySQL su un computer con sistema Windows XP, Windows Vista o Windows
7. Se utilizzate un sistema operativo diverso da Windows, potete saltare questa parte.
Il modo più facile per installare e configurare un server web su Windows è quello di
utilizzare un pacchetto gratuito denominato XAMPP per Windows, che include copie
di Apache, PHP e MySQL. Esaminiamo la procedura di installazione.
IL FAI DA TE
In precedenti edizioni di questo libro si consigliava di installare Apache, PHP e MySQL
singolarmente utilizzando per ciascuno i pacchetti di installazione ufficiali. Si pensava
che fosse una buona pratica per i principianti, perché consentiva di farsi un’idea precisa
dei rapporti tra questi componenti.
Sfortunatamente, però, in questo modo molti lettori spendevano le loro prime ore nella
“terra di PHP” districandosi tra una lunga sequenza di dettagliate istruzioni di installazione.
Cosa ancora peggiore, talvolta alcuni passaggi risultavano obsoleti a causa di cambiamenti
intervenuti nelle varie versioni dei pacchetti software.
Oggi crediamo fortemente che il miglior modo per apprendere PHP e MySQL sia quello
di usarli praticamente da subito. Più rapido e semplice risulta il processo di installazione, meglio è. Ecco perché in questa edizione consigliamo di utilizzare XAMPP. Per di
più, se siete entrati da poco in queste acque, non c’è motivo di riempire il computer
di componenti software separati ma interdipendenti, che sarà complicato rimuovere.
In ogni caso, se amate alla follia il fai da te, vi piace “smanettare” o semplicemente se, arrivati
al termine di questo libro, volete sapere come procedono i professionisti, nell’Appendice A
trovate istruzioni dettagliate per l’installazione dei singoli pacchetti. Siete liberi di seguire
tali istruzioni al posto di quelle fornite in questo paragrafo, se lo preferite.
1. Scaricate l’ultima versione di XAMPP per Windows dal sito web (scorrete verso
il basso per trovare i collegamenti di download). Scegliete la versione dell’installer
consigliata (al momento in cui scriviamo è XAMPP per Windows 1.8.0, di circa
91 MB), quindi fate clic sul file per avviare l’installer (Figura 1.1).
libro_php.indb 3
9/3/2012 6:25:53 PM
4
Capitolo 1
Figura 1.1 L’installer di XAMPP.
AVVISO PER IL CONTROLLO DELL’ACCOUNT UTENTE
A seconda della versione di Windows in uso e della configurazione del sistema, l’installer
di XAMPP potrebbe visualizzare il messaggio di avviso mostrato nella Figura 1.2. Benché
sembri un po’ allarmante, non si tratta di nulla di preoccupante. Consiglia semplicemente
di non installare XAMPP in C:\Program Files (o C:\Programmi) come la maggior parte
degli altri programmi, per evitare problemi relativi ai permessi sui file. L’installer per default
esegue l’installazione in C:\xampp.
Figura 1.2 XAMPP potrebbe visualizzare un avviso relativo al controllo dell’account utente.
libro_php.indb 4
9/3/2012 6:25:53 PM
Installazione
5
2. L’installer chiederà di specificare una posizione per installare XAMPP. Il percorso
di default c:\xampp mostrato nella Figura 1.3 è la scelta ideale, ma se vi sentite tanto
esperti da poter eseguire l’installazione altrove (per esempio su un’unità diversa)
specificate la vostra posizione preferita. Evitate però la solita cartella C:\Program
Files (o C:\Programmi, o simili), poiché XAMPP richiede dei permessi sui file che
Windows potrebbe limitare in tale posizione.
Figura 1.3 La cartella di destinazione di default è una buona scelta.
3. L’installer chiederà di specificare varie opzioni. Le scelte di default visibili nella Figura
1.4 sono probabilmente le migliori in questa fase. Se preferite mantenere un desktop
pulito e ordinato, deselezionate la casella Create a XAMPP desktop icon. Se volete
che i server Apache e MySQL siano sempre in esecuzione (anziché doverli avviare
manualmente ogni volta che vi servono per lavoro di sviluppo), potete selezionare
le caselle Install Apache as service e Install MySQL as service. Le istruzioni fornite nel
seguito, tuttavia, presuppongono che non le abbiate attivate.
4. Quando l’installer ha completato il suo compito, verrà richiesto di avviare il pannello
di controllo di XAMPP. Fate clic su No in modo da poter seguire la descrizione
riportata qui per come avviarlo nel modo normale. Una volta completato il lavoro,
l’installer viene chiuso.
5. A questo punto vi consiglio di arrestare il sistema e riavviare il computer (anche
se l’installer di XAMPP non lo chiede). Nelle nostre prove, i passaggi descritti nel
seguito non operano correttamente se non si riavvia il sistema (abbiamo anche
segnalato il problema nel forum di supporto di XAMPP).
libro_php.indb 5
9/3/2012 6:25:54 PM
6
Capitolo 1
Figura 1.4 Le opzioni di default vanno bene.
Una volta completata l’installazione e riavviato il sistema, si può avviare il pannello di
controllo di XAMPP, accessibile nel menu Start selezionando Tutti i programmi → Apache
Friends → XAMPP → XAMPP Control Panel. Nel system tray all’estremità destra della
barra delle applicazioni di Windows comparirà un’icona arancione (anche se per default
scomparirà dopo pochi secondi) e si aprirà l’applicazione XAMPP Control Panel visibile
nella Figura 1.5.
Fate clic sui pulsanti Start accanto a Apache e MySql nell’elenco Modules per avviare
i server Apache e MySQL integrati in XAMPP. Ciascuno dei server avviati dovrebbe
apparire con il nome evidenziato da una casella verde a indicare che è in esecuzione. A
seconda della versione e della configurazione di Windows, potrebbe essere visualizzato
un messaggio di avvertimento di Windows Firewall per ciascun server, come quello
della Figura 1.6. Questo accade quando i server tentano di avviare la fase di ascolto per
richieste di browser provenienti dal mondo esterno.
Se volete essere assolutamente certi che soltanto voi abbiate accesso ai server di sviluppo,
fate clic su Annulla. Sarete comunque in grado di connettervi al server web utilizzando
un browser eseguito sul vostro computer. In alcuni casi, tuttavia, risulta più agevole
accedere al server da un altro computer della rete (per esempio quello di un collega a
cui illustrare il fantastico sito che state realizzando); per questo motivo consigliamo di
selezionare l’opzione Reti private, ad esempio una rete domestica o aziendale, e di fare clic
su Consenti accesso.
libro_php.indb 6
9/3/2012 6:25:54 PM
Installazione
7
Figura 1.5 Il pannello di controllo di XAMPP.
Figura 1.6 Questo messaggio di avvertimento indica che Apache sta facendo il proprio lavoro.
libro_php.indb 7
9/3/2012 6:25:54 PM
8
Capitolo 1
PERCHÉ IL MIO SERVER NON SI AVVIA?
Se il vostro server Apache o MySQL non si avvia, le cause possono essere diverse. Quella
più comune è che sul computer è già in esecuzione un server web (potrebbe essere
un’altra copia di Apache o di Microsoft’s Internet Information Services) o un server MySQL.
Cercate nel menu Start e nella sezione per la disinstallazione di applicazioni del Pannello di
controllo di Windows un’altra installazione di Apache HTTP Server o MySQL, e se la trovate,
disinstallatela. Esiste un altro programma simile a XAMPP, denominato WampServer, che,
se installato, potrebbe essere la causa del problema.
Se pensate che nel vostro sistema sia in uso il server web di Microsoft – Internet Information Services (IIS) – potete seguire le istruzioni fornite da Microsoft per chiuderlo, disponibili presso http://technet.microsoft.com/en-us/library/cc732317%28WS.10%29.
aspx. Se anche così non riuscite a risolvere il problema, potrebbero risultarvi utili le FAQ
di XAMPP per Windows (http://www.apachefriends.org/en/faq-xampp-windows.
html#nostart) in particolare se utilizzate Skype, che può interferire con i server web in
alcune configurazioni di rete.
Quando entrambi i server sembrano funzionare correttamente, fate clic sul pulsante
Admin accanto ad Apache. Avviate il browser web e caricate http://localhost/xampp/, la
pagina di amministrazione di XAMPP per Windows mostrata nella Figura 1.7.
Figura 1.7 La pagina di amministrazione fornita da XAMPP conferma
che il server web Apache è in esecuzione.
libro_php.indb 8
9/3/2012 6:25:54 PM
Installazione
9
Se vedete questa pagina significa che il server web funziona correttamente, perché
la pagina in questione è stata caricata da esso. Notate che l’URL visibile nella barra
dell’indirizzo del browser inizia con http://localhost/ (in alcuni browser recenti non
è mostrato il protocollo, "http://"); localhost è un hostname speciale che punta sempre
al computer locale. In tutti gli esempi descritti in questo libro, ogni volta che volete
caricare una pagina web dal vostro server web personale utilizzerete un URL che inizia
con http://localhost/.
Quando avete terminato di utilizzare il pannello di controllo di XAMPP, chiudetelo
facendo clic sul pulsante Quit. In alternativa potete semplicemente chiudere la sua finestra,
mantenendo così l’icona di XAMPP nell’area di notifica di Windows (se l’avete configurata in modo che rimanga visibile). Facendo clic su tale icona si avvia direttamente il
pannello di controllo di XAMPP.
IL PANNELLO DI CONTROLLO DI XAMPP CONSUMA RISORSE
Quando si esce dal pannello di controllo di XAMPP, i server Apache e MySQL sono mantenuti in esecuzione nel sistema. Se avete terminato di utilizzarli, vi consigliamo di fare
clic sul pulsante Stop per chiudere ciascuno di questi server prima di uscire dal pannello
di controllo di XAMPP; non ha senso consumare risorse inutilmente, con il rischio di
rallentare tutti quei giochini su Facebook che vi piacciono tanto!
Impostare la password di root MySQL in XAMPP
Una volta configurato il sistema Windows con i server opportuni, è necessario assegnare
una password di root per MySQL in XAMPP.
MySQL consente soltanto agli utenti autorizzati di visualizzare e manipolare le informazioni memorizzate nei suoi database, perciò dovrete indicare chi è autorizzato e chi
no. Alla prima installazione di MySQL, il server è configurato con un utente di nome
“root” dotato di un accesso che gli consente di svolgere la maggior parte delle attività
senza dover inserire una password. Il vostro primo compito è quello di assegnare una
password all’utente root in modo da evitare che utenti non autorizzati possano manipolare i vostri database.
PERCHÉ PREOCCUPARSENE?
È importante rendersi conto che MySQL, esattamente come un server web, è accessibile
da qualsiasi computer della stessa rete. Se state lavorando su un computer collegato a
Internet, allora, in base alle misure di sicurezza messe in atto, chiunque potrebbe essere
in grado di connettersi al vostro server MySQL. La necessità di impostare una password,
scegliendola difficile da indovinare, ora dovrebbe apparirvi ovvia!
XAMPP facilita la soluzione di questi e altri problemi di sicurezza della configurazione
in relazione ai nuovi server. Mentre i server Apache e MySQL sono in esecuzione, aprite
nel browser l’indirizzo: http://localhost/security/. In alternativa potete fare clic sul
collegamento Sicurezza nel menu della pagina di amministrazione di XAMPP.
Questa pagina elenca tutti i problemi di sicurezza che XAMPP è in grado di individuare
nella configurazione corrente del server; tra di essi dovreste vedere: “L’utente admin di
MySQL non ha una password”. Fate scorrere la tabella e fate clic sul collegamento che
consente di risolvere i problemi elencati.
libro_php.indb 9
9/3/2012 6:25:54 PM
10
Capitolo 1
La primissima sezione del modulo che appare vi chiederà di impostare una password per
l’utente root di MySQL. Proseguite e sceglietene una che possiate ricordare. Lasciate
l’opzione Autenticazione PhpMyAdmin impostata su cookie, e utilizzate l’opzione per salvare
la password in un file di testo se pensate di poterla dimenticare (tenete presente però
che la password verrà salvata dove una persona che utilizzi il vostro computer potrebbe
trovarla). Fate clic sul pulsante Cambia la password per cambiare la password, poi arrestate
e riavviate il server MySQL utilizzando il pannello di controllo di XAMPP.
Cercate di non dimenticare questa password, perché in quel caso potrebbe essere complicato cambiarla, anche se mostreremo come fare nel Capitolo 10. Riportiamo qui un
promemoria utile per registrare la password di root di MySQL, se proprio non riuscite
a ricordarla in altro modo.
LA MIA PASSWORD DI ROOT PER MYSQL (WINDOWS)
Password utente root: _________________________
PROTEZIONE DELLA DIRECTORY DI XAMPP
Nella pagina della sicurezza di XAMPP viene segnalato anche il fatto che le vostre pagine
web sono accessibili a tutti gli utenti della vostra rete. Tecnicamente è vero, ma non è il
caso di preoccuparsi troppo se un collega o un familiare può accedere al sito che state
realizzando. Inoltre, la maggior parte delle configurazioni di rete per sistemi da ufficio e
da casa evita che utenti esterni alla rete possano accedere al server web in esecuzione
sul computer locale. Detto questo, se volete seguire il consiglio di XAMPP di impostare
un nome utente e una password che saranno richiesti per la visualizzazione delle pagine
sul vostro server, fatelo pure.
Installazione su Mac OS X
In questo paragrafo vedremo come avviare l’esecuzione di un server web con PHP e
MySQL su un computer Mac con sistema Mac OS X versione 10.5 (Leopard). Se non
utilizzate un Mac, potete saltare tranquillamente questa parte.
Mac OS X si distingue per essere l’unico sistema operativo di tipo consumer a includere
Apache e PHP come componenti di qualsiasi installazione standard (inoltre dispone di
Ruby, Python e Perl – tutti noti linguaggi di programmazione web). Occorre comunque attivare alcune opzioni, e serve sempre un server di database MySQL. Il modo più
semplice per gestire tutti questi componenti è quello di ignorare il software integrato
nel sistema e di installare tutto ciò che serve mediante un unico pacchetto.
MAMP (Mac, Apache, MySQL e PHP) è un pacchetto gratuito che include copie di
versioni recenti del server web Apache, di PHP e di MySQL.Vediamo ora la procedura
di installazione.
IL FAI DA TE
In precedenti edizioni di questo libro si consigliava di installare le versioni di Apache e PHP
fornite con Mac OS X e di installare MySQL utilizzando il suo pacchetto di installazione
ufficiale. Si pensava che fosse una buona pratica per i principianti, perché consentiva di
farsi un’idea precisa dei rapporti tra questi componenti.
libro_php.indb 10
9/3/2012 6:25:54 PM
Installazione
11
Sfortunatamente, però, in questo modo molti lettori spendevano le loro prime ore nella
“terra di PHP” districandosi tra una lunga sequenza di dettagliate istruzioni di installazione.
Cosa ancora peggiore, talvolta alcuni passaggi risultavano obsoleti a causa di cambiamenti
intervenuti nelle varie versioni dei pacchetti software.
Oggi crediamo fortemente che il miglior modo per apprendere PHP e MySQL sia quello
di usarli praticamente da subito. Più rapido e semplice risulta il processo di installazione,
meglio è. Ecco perché in questa edizione consigliamo di utilizzare MAMP. Per di più, se
siete entrati da poco in queste acque, non c’è motivo di perdere tempo addentrandosi
nei meandri del sistema operativo, quando si possono mantenere tranquillamente le
impostazioni di fabbrica.
In ogni caso, se amate alla follia il fai da te, vi piace “smanettare” o semplicemente se, arrivati
al termine di questo libro, volete sapere come procedono i professionisti, nell’Appendice A
trovate istruzioni dettagliate per l’installazione dei singoli pacchetti. Siete liberi di seguire
tali istruzioni al posto di quelle fornite in questo paragrafo, se lo preferite.
1. Scaricate l’ultima versione dal sito web di MAMP (http://www.mamp.info). Potete utilizzare la versione gratuita, non quella commerciale denominata MAMP Pro. Una volta
scaricato il file (al momento in cui scriviamo la versione più recente è MAMP 2.1.1 e
occupa circa 146 MB), se necessario, fate doppio clic sul pacchetto per decomprimerlo,
poi fate doppio clic sull’icona dell’installer per avviarlo (Figura 1.8).
Figura 1.8 Installazione del pacchetto MAMP.
libro_php.indb 11
9/3/2012 6:25:54 PM
12
Capitolo 1
SEGUITE CON ATTENZIONE IL PROSSIMO PASSAGGIO!
Il prossimo passaggio è molto delicato. Leggete bene il testo prima di fare clic alla cieca
nelle finestre dell’installer!
2. Durante l’installazione vi sarà richiesto di scegliere se eseguire o meno un’installazione standard. A questo punto, anziché fare clic sul pulsante Installa, scegliete Ad
hoc. Avrete così l’opportunità di deselezionare MAMP PRO (altrimenti l’installer
installerà di default anche questa versione commerciale, nella speranza che alla fine
deciderete di acquistarla). Questo passaggio è particolarmente importante perché la
versione gratuita di MAMP visualizzerà un messaggio di avvertimento in avvio, nel
caso dell’installazione di MAMP PRO.
AVETE SALTATO QUESTO PASSAGGIO?
Se avete saltato questo passaggio e avete consentito all’installer di installare MAMP PRO
sul vostro sistema, è abbastanza facile rimuoverlo.
Aprite la cartella Applicazioni, fate doppio clic sulla nuova cartella MAMP PRO e poi doppio clic su MAMP PRO Uninstaller. Fate clic su ciascuna casella di controllo nella finestra
Uninstaller, e poi su Uninstall. Uscite dalla procedura di disinstallazione.
Navigate fino alla cartella Applicazioni e localizzate la nuova sottocartella MAMP. Apritela
e fate doppio clic sull’icona MAMP al suo interno per avviare MAMP. All’avvio, per prima
cosa appare la finestra di MAMP mostrata nella Figura 1.9. I due indicatori di stato
passeranno da rosso a verde all’avvio di Apache e MySQL (fate clic su Avvia il Server).
Poi MAMP aprirà il vostro browser web predefinito e caricherà la pagina di benvenuto,
visibile nella Figura 1.10.
Figura 1.9 La finestra di MAMP.
libro_php.indb 12
9/3/2012 6:25:54 PM
Installazione
13
Figura 1.10 La pagina di benvenuto di MAMP conferma che Apache, PHP e MySQL
sono installati e in esecuzione.
Se vedete questa pagina significa che il vostro server web è installato e in esecuzione,
poiché la pagina in questione è stata caricata da esso. Notate che l’URL nella barra dell’indirizzo del browser inizia con http://localhost:8888/ (alcuni browser recenti nascondono
il protocollo “http://”); localhost è un hostname speciale che punta sempre al computer
locale. “8888” è il numero di porta utilizzato dal browser per la connessione al computer.
Ogni server in esecuzione su un computer si pone in ascolto su un unico numero di
porta. Solitamente i siti web sono ospitati sulla porta 80 e i browser per la connessione
utilizzano porta di default, quando l’URL non specifica un numero particolare. Per
default MAMP è configurato in modo che Apache si ponga in ascolto sulla porta 8888
e MySQL sulla porta 8889. In questo modo si garantisce che MAMP funzioni anche se
il Mac dispone già di un server web installato e in ascolto sulla porta 80, o di un server
MySQL in ascolto sulla porta 3306 (la porta standard di MySQL). Naturalmente non
vi sono garanzie che un’altra applicazione non stia utilizzando la porta 8888 o 8889 sul
sistema. Abbiamo verificato dei problemi con Playback di Yazsoft (un’applicazione per
streaming media su console da gioco come Xbox 360 e PlayStation 3), che utilizza la
porta 8888 quando è in esecuzione. Se avete dubbi, provate con un altro numero di porta.
Il codice e le istruzioni riportati nel prosieguo del libro presuppongono che il vostro
server web sia in esecuzione sulla porta 80 e il server MySQL sulla porta 3306. Ora sarebbe un buon momento per verificare se MAMP possa essere eseguito senza problemi
con questi numeri di porta standard. Ecco come si procede:
1. Nella finestra di MAMP fate clic su Arresta il Server. Attendete finché gli indicatori
diventano rossi.
2. Fate clic sul pulsante Preferenze e attivate la scheda Porte.
3. Fate clic sul pulsante Imposta le porte base per Apache e MySQL per fare in modo che
Apache utilizzi la porta 80 e MySQL la porta 3306. Fate clic su OK.
4. Fate clic su Avvia il Server. MAMP vi chiederà di inserire la password, perché l’esecuzione di un server su un numero di porta Internet “ufficiale” come l’80 richiede
privilegi di amministratore.
libro_php.indb 13
9/3/2012 6:25:54 PM
14
Capitolo 1
Se entrambi gli indicatori diventano verdi, fate clic su Apri la Home Page e verificate
che questa volta la pagina di benvenuto di MAMP appaia con un URL che inizia con
http://localhost/ (senza numero di porta). Se è così, siete a posto!
Se invece uno o entrambi gli indicatori non diventano rossi al passo 1, o se la pagina di
benvenuto non viene caricata correttamente, con tutta probabilità c’è un conflitto di
porta. In qualche punto del sistema Mac c’è un altro server web o MySQL che utilizza
già una o entrambe le porte indicate. Un punto da controllare è l’icona Condivisione delle
preferenze di sistema. Se è attiva l’opzione Condivisione web, il server integrato Apache di
Mac OS X è in esecuzione (normalmente sulla porta 80). Un’altra possibilità è quella di
provare a chiudere varie applicazioni. Per esempio, in alcune situazioni abbiamo verificato
che Skype per Mac impediva l’avvio del server MySQL di MAMP.
In ogni caso, se alla fine riuscite a eseguire MAMP soltanto sulle porte di default (8888
e 8889), utilizzatele pure. In questo caso, ogni volta che vedrete in questo libro un URL
che inizia con http://localhost/, dovrete aggiungere il numero di porta (http://localhost:8888/); al momento di effettuare la connessione a MySQL, indicheremo come
specificare un numero di porta non standard.
Un’ultima modifica da apportare alla configurazione di default di MAMP è l’attivazione
della visualizzazione degli errori PHP. Per default, quando inserite un errore grave nel
codice PHP (e capita a tutti di farlo, molto spesso), il server Apache MAMP produce una
pagina web vuota. Poiché uno sviluppatore ha bisogno di capire dove si trova l’errore,
una pagina bianca non è molto utile; è decisamente preferibile vedere un messaggio di
errore dettagliato nella finestra del browser. Il motivo per cui MAMP è configurato in
modo da non visualizzare i messaggi d’errore è che, se decidete di utilizzarlo per ospitare
un sito web accessibile al pubblico, i visitatori del sito vedrebbero tali messaggi imbarazzanti. Ciò che risulta imbarazzante su un sito web pubblico, tuttavia, è praticamente
essenziale nella fase di sviluppo.
Per attivare la visualizzazione degli errori PHP, aprite la cartella MAMP nella vostra cartella
Applicazioni sul Mac, quindi passate alla sottocartella bin/php/, che a sua volta contiene
una sottocartella per ogni versione di PHP fornita con MAMP. Potete controllare le
preferenze di MAMP per esserne certi, ma probabilmente sarà configurato in modo da
eseguire la versione più recente, perciò aprite la cartella corrispondente (è php5.3.14
nella nostra copia di MAMP 2.1.1), e poi aprite la sottocartella conf. Aprite il file php.
ini nel vostro editor di testi preferito (TextEdit va benissimo), e cercate le righe seguenti:
; Print out errors (as a part of the output). For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below). Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = Off
Sostituite Off nell’ultima riga con On e salvate il file. Ora fate clic su Arresta il Server, poi
su Avvia il Server in MAMP per riavviare Apache con la nuova configurazione. Ecco fatto:
PHP ora visualizza utili (anche se un po’ preoccupanti) messaggi di errore.
Quando avete terminato di lavorare con MAMP, chiudetelo (con tutti i suoi server)
facendo clic sul pulsante Esci nella sua finestra. E quando siete pronti a lavorare su un
sito web basato su database, avviatelo di nuovo!
libro_php.indb 14
9/3/2012 6:25:55 PM
Installazione
15
Impostare la password di root MySQL in MAMP
Una volta che MAMP è installato e in esecuzione sul vostro Mac con i relativi server,
il prossimo passo è quello di assegnare una password di root per MySQL, infatti MySQL
consente soltanto agli utenti autorizzati di visualizzare e manipolare le informazioni
memorizzate nei database, perciò dovete indicargli chi è autorizzato e chi no. Quando
MAMP installa per la prima volta MySQL, lo configura con un utente denominato
“root” che ha il livello d’accesso necessario per svolgere la maggior parte delle attività.
La password per questo utente è “root” – non proprio a prova di bomba! Ecco perché
il primo passo da compiere dovrebbe essere quello di assegnare una nuova password
all’utente root, onde evitare che chiunque possa manipolare i vostri database.
PERCHÉ PREOCCUPARSENE?
È importante rendersi conto che MySQL, esattamente come un server web, è accessibile
da qualsiasi computer della stessa rete. Se state lavorando su un computer collegato a
Internet, allora, in base alle misure di sicurezza messe in atto, chiunque potrebbe essere
in grado di connettersi al vostro server MySQL. La necessità di impostare una password,
scegliendola difficile da indovinare, ora dovrebbe apparirvi ovvia!
Per impostare la password di root per MySQL, innanzitutto assicuratevi che MAMP e
i suoi server siano in esecuzione, poi aprite l’applicazione Terminale di Mac OS X (si
trova nella cartella Utility in Applicazioni) e digitate i comandi seguenti (premendo Invio
dopo ciascuno):
1. cd /Applications/MAMP/Library/bin/
Questo comando vi porta alla sottocartella Library/bin/ dell’installazione di MAMP,
dove si trovano i programmi di utilità per Terminale.
2. ./mysqladmin -u root -p password "newpassword"
Sostituite newpassword con la nuova password che volete assegnare all’utente root di
MySQL. Quando premete Invio, vi sarà chiesto di digitare la password attuale: root.
3. Uscite da Terminale.
Ora la password è impostata, ma c’è un problema: MAMP stesso necessita di un accesso
non limitato al vostro server MySQL per poterlo controllare. Se a questo punto fate clic
sul pulsante Apri la Home Page in MAMP, vedrete apparire un messaggio di errore:“Error:
Could not connect to MySQL server!”. Naturalmente occorre indicare a MAMP qual
è la nuova password di root per MySQL.
Per far funzionare nuovamente MAMP dovete modificare diversi file nella sua cartella.
Potete aprire ciascuno di questi file in TextEdit, o in qualunque editor preferite utilizzare.
MODIFICA DI SCRIPT PHP IN MAC OS X CON TEXTEDIT
TextEdit ha la cattiva abitudine di inserire errori nei file .php per i documenti HTML quando
li apre, tentando di visualizzarli come testo formattato. Per evitarlo dovete selezionare la
casella per ignorare i comandi “rich text” (RTF) nella finestra di apertura dei file.
libro_php.indb 15
9/3/2012 6:25:55 PM
16
Capitolo 1
/Applications/MAMP/bin/mamp/index.php
Trovate la riga seguente:
$link = @mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock',
'root', 'root');
Sostituite il secondo 'root' con la vostra nuova password di root per MySQL (nel nostro
esempio, 'newpassword').
/Applications/MAMP/bin/phpMyAdmin/config.inc.php
Questo è un file piuttosto lungo, perciò potrebbe essere necessario utilizzare la funzione
“trova” dell’editor per localizzare le righe seguenti:
$cfg['Servers'][$i]['user']
= 'root';
↵
// Utente MySQL
$cfg['Servers'][$i]['password'] = 'root';
↵
// Password di MySQL (richiesta solo con auth_type 'config')
Anche in questo caso sostituite il secondo 'root' con la vostra nuova password di root
per MySQL ('newpassword').
/Applications/MAMP/bin/checkMysql.sh
/Applications/MAMP/bin/quickCheckMysqlUpgrade.sh
/Applications/MAMP/bin/repairMysql.sh
/Applications/MAMP/bin/stopMysql.sh
/Applications/MAMP/bin/upgradeMysql.sh
Il contenuto di ciascuno di questi file inizia con una parte simile a quanto segue (in
questo caso si tratta del file checkMysql.sh):
# /bin/sh
/Applications/MAMP/Library/bin/mysqlcheck --all-databases --check
↵ --check-upgrade -u root -proot
↵ --socket=/Applications/MAMP/tmp/mysql/mysql.sock
Vedete -proot? La p sta per “password” e il resto è proprio la password in questione.
Inserite la vostra nuova password (-pnewpassword). Apportate la stessa modifica a ognuno
dei cinque file indicati qui.
Dopo aver effettuato e salvato tutte queste modifiche, MAMP dovrebbe funzionare
normalmente di nuovo, con il server MySQL protetto da intrusioni esterne. Naturalmente non dovete dimenticare la password, perché è complicato impostarla di nuovo
(mostreremo la procedura nel Capitolo 10).
Riportiamo qui un promemoria utile per registrare la password di root di MySQL, nel
caso possa esservi utile (evitate di utilizzare comunque tale password per installazioni
che non siano di test).
LA MIA PASSWORD DI ROOT PER MYSQL (MAC)
Password utente root: _________________________
libro_php.indb 16
9/3/2012 6:25:55 PM
Installazione
17
Installazione su Linux
Oggigiorno la maggior parte delle persone che utilizzano come sistema operativo Linux
possiede le conoscenze tecniche sufficienti per installare software come Apache, PHP e
MySQL. Tuttavia, generalmente si sente sicura con il proprio modo personale di procedere, che probabilmente contrasta con qualsiasi istruzione che potremmo fornire qui.
Se rientrate in questa categoria, procedete pure e installate le versioni più recenti di Apache, PHP e MySQL nella maniera più comoda per voi, utilizzando un package manager
o qualsiasi altra strategia. Per gli argomenti trattati in questo libro, i dettagli particolari
della configurazione dei package non contano.
Detto questo, se invece siete uno dei rari utenti di Linux che preferisce essere guidato
nell’installazione, potete trovare una serie di istruzioni dettagliate per Linux nell’Appendice A.
Che cosa chiedere al provider di hosting web
Mentre avete a che fare con PHP e MySQL sul vostro computer, è una buona idea
cominciare a raccogliere informazioni che vi serviranno quando arriverà il momento di
pubblicare il vostro primo sito basato su database. Riportiamo di seguito un riepilogo
dei dettagli che occorre chiedere al proprio provider di hosting web.
Per prima cosa dovete sapere come trasferire i file sul sistema host. Gli script di PHP si
inviano in upload sull’host esattamente come i normali file HTML, CSS e le immagini
che costituiscono un sito web statico, perciò, se sapete già come procedere per questi
file, non dovete chiedere nient’altro al provider. Se invece è la prima volta che vi servite di un provider, dovete conoscere il tipo di protocollo di trasferimento supportato
(FTP o SFTP), oltre a nome utente e password da utilizzare per la connessione con il
programma FTP o SFTP. Dovete anche conoscere la directory in cui inserire i file per
renderli accessibili ai browser web.
In più, vi servono alcuni dettagli sul server MySQL che è stato configurato sul sistema
host. È importante conoscere il nome di host da utilizzare per la connessione (spesso
localhost), e i vostri nome utente e password per MySQL, che potrebbero essere diversi
da quelli utilizzati per il trasferimento via FTP o SFTP. L’host probabilmente vi fornirà
un database vuoto da utilizzare, in modo da evitare interferenze con i database di altri
utenti che potrebbero condividere il vostro stesso server MySQL. In questo caso, dovete
conoscere il nome di tale database.
Avete preso nota di tutto? Riportiamo un promemoria per annotare le informazioni
necessarie riguardo l’host web (di test).
libro_php.indb 17
9/3/2012 6:25:55 PM
18
Capitolo 1
DETTAGLI DEL MIO HOSTING
Protocollo di trasferimento dei file (cerchiare quello in uso):
• FTP
• SFTP
Nome host (S)FTP:
_________________________
Nome utente (S)FTP:
_________________________
Password (S)FTP:
_________________________
Nome host MySQL:
_________________________
Nome utente MySQL:
_________________________
Password MySQL:
_________________________
Nome database MySQL: _________________________
Il primo script PHP
Sarebbe scortese da parte nostra spiegare come installare tutto quanto e poi fermarsi
prima di consentirvi un assaggio di script PHP, facendovi attendere fino al Capitolo 3.
Ecco quindi un piccolo antipasto.
Aprite il vostro editor di testi o HTML preferito e create un nuovo file denominato
today.php. Digitate nel file quanto segue:
chapter1/today.php
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="utf-8">
<title>Data di oggi</title>
</head>
<body>
<p>Data di oggi (secondo questo server web):
<?php
echo date('l, F jS Y.');
?>
</p>
</body>
</html>
È UNA LETTERA, NON UN NUMERO
La riga di codice più importante è questa:
echo date('l, F jS Y.');
Sfortunatamente è anche quella che la maggior parte delle persone sbaglia a digitare,
mentre consulta questo libro. Vedete il carattere prima della virgola? Non è il numero uno
(1), ma una lettera “l” minuscola.
libro_php.indb 18
9/3/2012 6:25:55 PM
Installazione
19
SCRITTURA DI SCRIPT PHP IN WINDOWS CON BLOCCO NOTE
Per salvare un file con estensione .php in Blocco note, dovete selezionare come tipo di file
Tutti i file, oppure racchiudere il nome di file tra apici nella finestra di dialogo per il salvataggio. Altrimenti, Blocco note salverà il file con l’estensione .php.txt, che non va bene.
SCRITTURA DI SCRIPT PHP IN MAC OS X CON TEXTEDIT
Quando utilizzate TextEdit come editor per file .php dovete prestare attenzione, perché
il programma salva i file per default in formato RTF (Rich Text Format) con un’estensione
nascosta .rtf. Per salvare un nuovo file .php, dovete prima ricordarvi di convertirlo
in testo normale selezionando il comando Formato → Converti in formato Solo testo
(Maiusc+Mela+T) dal menu di TextEdit.
Il programma inoltre ha la cattiva abitudine di scambiare i file .php esistenti per documenti HTML quando li apre, e di tentare di visualizzarli come testo formattato. Per evitare
ciò dovete selezionare la casella Ignora i comandi RTF nella finestra di dialogo di apertura.
PROVATE UN IDE GRATUITO!
Come potete rendervi conto dalle note precedenti, gli editor di testi forniti con i sistemi
operativi attuali non sono molto adatti per la scrittura di script PHP. Tuttavia esistono molti
solidi editor di testi e sistemi IDE (Integrated Development Environments) che offrono ampio
supporto per la stesura di script PHP e che potete scaricare gratuitamente. Eccone alcuni
che funzionano su Windows, Mac OS X e Linux:
NetBeans
http://www.netbeans.org/features/php/
Aptana
http://www.aptana.com/php
Komodo Edit
http://www.activestate.com/komodo_edit/
Se preferite evitare di digitare tutto il codice, potete prelevare il file corrispondente – con
tutto il codice di questo libro – dal sito che lo accompagna. Si rimanda alla Prefazione
per i dettagli su come scaricare l’archivio di codice.
Salvate il file e spostatelo nella directory web root del vostro server web locale.
DOV’È LA DIRECTORY WEB ROOT DEL SERVER WEB LOCALE?
Se state utilizzando un server Apache che avete installato manualmente, la directory web
root è htdocs e si trova all’interno della directory di installazione di Apache (normalmente
è C:\Program Files\Apache Software Foundation\Apache2.2\htdocs su Windows e
/usr/local/apache2/htdocs su Linux). Nel caso del server Apache integrato in XAMPP,
la directory web root è htdocs all’interno della directory di installazione di XAMPP; potete
raggiungerla selezionando dal menu Start → Tutti i programmi → Apache Friends → XAMPP →
XAMPP htdocs folder. Se il server Apache in uso è quello integrato in Mac OS X, la directory
web root è /Library/WebServer/Documents. Il server Apache integrato in MAMP ha
una directory web root localizzata nella cartella htdocs all’interno della cartella di MAMP
(/Applications/MAMP/htdocs). Se preferite utilizzare un’altra cartella come directory web
root, potete cambiarla nella scheda Apache delle preferenze di MAMP. In questo modo è
particolarmente facile passare da un progetto di sviluppo web a un altro facendo puntare
MAMP a cartelle diverse.
libro_php.indb 19
9/3/2012 6:25:55 PM
20
Capitolo 1
Aprite il vostro browser web preferito e digitate http://localhost/today.php (o http://
se Apache è configurato per l’esecuzione su una porta diversa
da quella di default, 80) nella barra dell’indirizzo per visualizzare il file appena creato
(se avete installato Apache su Windows, forse avete attivato l’opzione per eseguirlo sulla
porta 8080; su Mac OS X, MAMP è configurato per default per eseguire Apache sulla
porta 8888).
localhost:port/today.php
DOVETE DIGITARE L’URL
Forse siete abituati a visualizzare in anteprima le vostre pagine web facendo doppio clic su
di esse, o utilizzando il comando di apertura dei file da menu del browser. Questi metodi
indicano al browser di caricare il file direttamente dall’unità a disco del computer, perciò
non funzionano con i file PHP.
Come abbiamo detto in precedenza, gli script PHP richiedono che il server web legga ed
esegua il codice che contengono, prima di inviare al browser il codice HTML generato.
Soltanto se digitate l’URL (http://localhost/today.php) il browser richiederà il file al
server web.
La Figura 1.11 mostra come dovrebbe apparire la pagina web generata dal vostro primo
script PHP.
Figura 1.11 Il primo script PHP in azione!
Bello, vero? Se utilizzate la funzione di visualizzazione del sorgente prevista nel browser
web, vedrete un normale file HTML con la data attuale. Il codice PHP (tutto quanto è
compreso tra <?php e ?> nel listato riportato precedentemente) è stato interpretato dal
server web e convertito in testo normale prima dell’invio al browser. Uno dei punti di
forza di PHP, e di altri linguaggi di scripting lato server, è che il browser web può restare
“ignorante”, perché è il server web che svolge tutto il lavoro!
libro_php.indb 20
9/3/2012 6:25:55 PM
Installazione
21
Se siete ancora dubbiosi di aver compreso il senso del codice digitato qui, state certi che
una volta arrivati al termine del Capitolo 3 avrete capito perfettamente come funziona.
Se manca la data, o se il browser vi chiede di scaricare il file PHP anziché visualizzarlo,
c’è qualcosa che non va nel supporto di PHP da parte del server web. Se potete, utilizzate il comando di visualizzazione del sorgente nel browser per esaminare il codice
della pagina. Probabilmente vedrete il codice PHP. Poiché il browser non è in grado di
comprendere il codice PHP, considera <?php ... ?> semplicemente come un lunghissimo
tag HTML non valido, e lo ignora. Controllate bene di aver richiesto il file al server web
e non al disco fisso locale (in questo caso nella barra dell’indirizzo del browser dovreste
vedere un URL che inizia con http://localhost/) e assicuratevi che il vostro server web
supporti PHP. Se avete seguito con attenzione le istruzioni di installazione fornite in
questo capitolo, non dovreste avere problemi..
La cassetta degli attrezzi è piena, le mani sono sporche
A questo punto dovreste essere equipaggiati con un server web che supporta script PHP,
un server di database MySQL e una conoscenza di base di come utilizzarli. Dovreste anche
esservi sporcati le mani scrivendo e testando con successo il vostro primo script PHP!
Se non siete riusciti a far funzionare lo script today.php, inviate una richiesta sul forum
di SitePoint (http://www.sitepoint.com/forums) e saremo lieti di aiutarvi a individuare il
problema.
Nel Capitolo 2 apprenderete le nozioni di base sui database relazionali e inizierete a
lavorare con MySQL. Vi sarà inoltre presentato il linguaggio dei database: SQL (Structured Query Language). Se non avete mai lavorato con un database prima d’ora, sarà un
argomento molto interessante!
libro_php.indb 21
9/3/2012 6:25:55 PM