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