Guida PHP su Windows (from HTML.IT)

Pagina creata da Erika Capuano
 
CONTINUA A LEGGERE
Guida PHP su Windows (from HTML.IT)

Introduzione: perchè Windows?
Non vi sono dubbi che l'ambiente lato server in cui PHP dà il meglio di sè sia quello Unix-like quindi
consigliamo a chi abbia un minimo di confidenza con Aix, Linux, Mac OS X e affini, di saltare a piè pari queste
pagine per andare a leggere la guida di HTML.it appena pubblicata che descrive l'installazione e l'utilizzo di PHP
in quei sistemi operativi.
Resta il fatto che Windows è il sistema operativo più utilizzato dall'utente comune, e che buona parte del successo
di PHP deriva dalla particolarità che non solo si tratta di linguaggio quasi perfettamente multipiattaforma, ma che
è anche possibile ricreare in Windows un ambiente di esecuzione molto simile a quello dove i vostri script, una
volta testati in locale, andranno a girare dopo essere stati caricati sul server in hosting.
Infatti la configurazione tipica Apache+PHP+MySQL, nella quale PHP è integrato come modulo di Apache, è
anch'essa nel suo insieme multipiattaforma.
Questa guida descrive la creazione in locale, nel nostro PC, di un ambiente di test cosiddetto WAMP (Windows,
Apache, MySQL, PHP), ed è rivolta a chi non ha ancora superato lo "scoglio" Linux.

Gli strumenti per eseguire gli script PHP
Nelle prossime pagine illustreremo l'installazione di:
     •   Php 4.4.2, l'ultima versione dell'interprete Php 4. Php 5 sta prendendo piede molto lentamente, quindi per
         ora abbiamo preferito proporlo solo come alternativa, evidenziando solo le differenze nell'installazione
         quando ve ne siano.
     •   Php 5.1.2. In alternativa, appunto, a Php 4. Le istruzioni relative a Php 5 saranno colorate nel testo in
         colore rosso mattone.
Chi invece fosse interessato alla creazione di un ambiente di sviluppo in cui Php 4 e Php 5 convivano
pacificamente, troverà un'ottima guida nell'articolo Testare Php 5 conservando Php 4: server Windows. La
procedura che andremo a descrivere differisce leggermente da quella indicata nelle guide non ufficiali oggi
reperibili in rete e si avvicina maggiormente a quella consigliata nel manuale del team di sviluppo di Php, e tra
poco capiremo i vantaggi di questa scelta.
     •   Apache 2.0.55, il webserver che processa gli script Php. La versione consigliata sarebbe ancora la 1.3.x
         ma dato che i fornitori di hosting, con troppa fretta, stanno passando in massa al ramo 2.0.x tanto vale
         che anche noi ricorriamo all'ultima release disponibile che, inoltre, è più ottimizzata per Windows.
     •   MySQL 4.1, la versione più diffusa del celebre server di database che era anche quella consigliata prima
         della recente release 5.0
     •   In alternativa MySQL 5.0, che comprende numerose nuove e attesissime funzionalità.

EasyPhp e altri strumenti di installazione automatica
Esistono tool che in un colpo solo consentono un'installazione completa dei software appena elencati.
Sconsigliamo vivamente l'utilizzo di strumenti di questo tipo, innazitutto perchè tolgono la possibilità di
capire la configurazione di Php e in secondo luogo perchè spesso sono difficili da aggiornare o disinstallare
completamente. In sostanza creano più problemi di quanti ne risolvano.

Installazione del Web Server Apache
Per prima cosa installiamo Apache 2. Dovrete scaricare dal sito ufficiale l'installer per Windows, e cioè il file
denominatoWin32 Binary (MSI Installer): abbiamo già deciso di utilizzare la release 2.0.x (al momento in cui
scriviamo 2.0.55 ) quindi ignoriamo tutte le altre.
Terminato il download ecco i passi da seguire. Cliccate due volte sull'installer, nelle prime due schermate della
procedura verrà chiesto di accettare le condizioni di utilizzo e leggere la licenza. In ambedue i casi fate clic su OK
e proseguite cliccando su Next, comparirà così la schermata visibile in figura 1 in cui dobbiamo indicare
nell'ordine:
     •   Il nome della nostra macchina (Network Domain) all'interno della rete
     •   Il dominio di riferimento (Server Name)
     •   L'email dell'amministratore
     •   La porta in cui il webserver starà in ascolto

                                   Figura 1. Le opzioni di configurazione di Apache 2

Nel nostro caso, poichè tutto il sistema non dovrà essere utilizzato come vero e proprio server, nei primi due
campi possiamo inserire "localhost" e nel terzo un'indirizzo e-mail qualsiasi. Nel quarto campo possiamo
scegliere la porta di default (porta 80) od un'altra (da utilizzare soltanto se nella macchina sia già attivo un altro
Webserver, ad esempio IIS o un'altra versione di Apache).
Ad ogni modo si tratta di dati che è possibile modificare anche in un secondo momento, operando direttamente nel
file di configurazione di Apache.
Al passaggio successivo scegliete l'installazione tipica e, quando viene richiesto il percorso in cui installare il
software, possiamo mantenere quello di default (C:\Programmi\Apache Group\). Cliccate ancora una volta
su Next e infine su Install. Se nel frattempo il firewall di Windows dovesse chiederci se bloccare o attivare
Apache, optate per Sblocca altrimenti il Web Server non potrà svolgere il suo lavoro. Se tutto è andato a buon
fine, nella zona delle icone di notifica, accanto all'orologio di Windows, dovrebbe essere comparsa una nuova
icona raffigurante la penna di Apache con una freccia verde ad indicare che il servizio è attivo (Figura 2).

                                    Figura 2. L'icona che rappresenta Apache avviato

Se cliccate con il pulsante destro sull'icona potremo aprire l'Apache Service Monitor (Figura 3) che consente di
avviare o arrestare il Web Server, andando nel menu di Windows in Start / Tutti i programmi / Apache HTTP
Server 2.0.55 troveremo altre opzioni di configurazione e amministrazione piuttosto intuitive.
Figura 3. Apache Service Monitor, il servizio di controllo di Apache

Digitando nella barra degli indirizzi del browser l'url "http://localhost/" dovrebbe accoglierci la
pagina di benvenuto di Apache, ma ricordiamo che se per qualsiasi ragione alla lettera d) del punto
2) del precedente elenco avessimo indicato la porta 8080, l'url da digitare sarebbe
http://localhost:8080/.

Il file di configurazione di Apache
Ora che il webserver è attivo non ci resta che scoprire dove vadano collocate le pagine Web affinchè siano
raggiungibili attraverso il browser; la directory (o cartella, in stile Windows) in cui questi file vanno inseriti e
divengono reperibili è detta DocumentRoot.
Se, come nel nostro esempio, Apache è stato installato in C:\Programmi\Apache Group\, la DocumentRoot si
trova in C:\Programmi\Apache Group\Apache2\htdocs.
Tra breve vedremo come sia possibile modificare a piacimento questo percorso, agendo sulla configurazione del
Web Server. I parametri di configurazione di Apache sono tutti racchiusi in un file di testo, denominato
httpd.conf, che è modificabile seguendo il percorso Start / Programmi / Apache HTTP Server 2.0.55 / Configure
Apache Server / Edit the Apache httpd.conf Configuration File oppure, secondo il percorso del nostro esempio,
accedendo direttamente alla directory C:\Programmi\Apache Group\Apache2\conf.
Dopo aver fatto un backup di sicurezza dell'httpd.conf, possiamo iniziare ad esplorarlo per apportare tutte le
modifiche necessarie: ad un primo sguardo potrebbe apparire molto complicato, ma in realtà non è così: le righe
precedute dal simbolo cancelletto (#) sono considerate dei commenti e vengono quindi ignorate, tutte le altre
presentano una struttura comune del tipo Parametro -> Valore che nella sintasssi dell'httpd.conf diventa
Parametro Valore ( separati da uno spazio) oppure Parametro Valore1, Valore2, ...
La prima cosa da fare è spostare la DocumentRoot in un percorso di più semplice accesso, come ad esempio
C:\www Creata la directory non ci resta che indicare ad Apache che è in quel percorso che deve reperire i file per
esaudire le richieste dei browser. Apriamo quindi il file http.conf secondo i due metodi descritti in precedenza e
cerchiamo la direttiva corrispondente.
  #
  # DocumentRoot: The directory out of which you will serve your
  # documents. By default, all requests are taken from this directory, but
  # symbolic links and aliases may be used to point to other locations.
  #
  DocumentRoot "C:/Programmi/Apache Group/Apache2/htdocs"

Sostituiamo il nostro nuovo percorso
  DocumentRoot "C:/www"
Da evidenziare il fatto che nell'httpd.conf sia sempre e comunque obbligatorio specificare i percorsi con lo slash
(/) anzichè con il backslash (\) tipico di Windows.
Lo stesso percorso va poi sostituito anche più in basso, come risulta chiaro dai commenti esplicativi
  #
  # This should be changed to whatever you set DocumentRoot to.
  #
  
      Options Indexes FollowSymLinks
      AllowOverride None
      Order allow,deny
      Allow from all
  
In questa direttiva vengono specificate alcune opzioni di default, valide per tutta la DocumentRoot e per i percorsi
sottostanti, modifichiamo solo la prima riga
  
Per il momento con il file httpd.conf abbiamo finito, anche se più avanti dovremo apportare altri cambiamenti. Per
vedere applicate le modifiche e rendere effettiva la nuova DocumentRoot è necessario riavviare il Web Server dal
già visto Apache Service Monitor (pulsante Restart), se non si verificano errori significa che possiamo passare
alle prossime operazioni.

Installazione di Php
A questo punto dobbiamo installare il motore Php, il componente software che si occuperà di interpretare gli
script Php conservati sul nostro server e di restituire la risposta al browser.
Scarichiamo per prima cosa il pacchetto contentente l'interprete PHP 4.4.x e le varie librerie per Windows dal
sito ufficiale. Il file che ci interessa al momento è denominato PHP 4.4.2 zip package. Non dobbiamo utilizzare
l'installer automatico (PHP 4.4.2 installer).
PHP 5: il Package è indicato con l'etichetta PHP 5.x zip package.
Dopo aver decompresso l'archivio in formato zip (php-4.4.2-Win32.zip) , nella cartella php-4.4.2-Win32 ne
troveremo un altra con il medesimo nome: quest'ultima contiene tutti i file necessari ad installare PHP in
Windows. Spostiamo questa directory in C:\ e rinominiamola php.
PHP 5: il nome del file è php-5.1.2-Win32.zip.
A questo punto l'interprete PHP e le librerie ausiliarie si trovano in C:\php, la struttura ad albero delle cartelle
dovrebbe essere la seguente.
  c:\php
  |
  +--cli
  | |
  | |-php.exe |
  +--dlls | |
  | |-expat.dll
  | |
  | |-fdftk.dll
  | |
  | |-...
  |
  +--extensions
  | |
  | |-php_bz2.dll
  | |
  | |-php_cpdf.dll
| |
  | |-..
  |
  +--mibs |
  +--openssl |
  +--pdf-related |
  +--sapi | |
  | |-php4apache.dll
  | |
  | |-php4apache2.dll
  | |
  | |-..
  |
  +--PEAR |
  |
  --go-pear.bat |
  |-..
  |
  --php.exe |
  |-..
  |
  --php.ini-dist |
  --php.ini-recommended
  | --php4ts.dll
  | |-...

Abbiamo contrassegnato in rosso le cartelle più importanti:
      •   cli: contiene l'eseguibile PHP da linea di comando (php.exe), non ha nulla che fare con il Web Server,
          serve esclusivamente a utilizzare PHP come linguaggio per script di shell "standalone". In molti casi può
          tornare utile, ma per maggiori dettagli invitiamo a leggere il capitolo dedicato nel manuale ufficiale e
          l'articolo Una shell in PHP .
      •   dlls: contiene librerie ausiliarie utilizzate da alcune estensioni php (vedi paragrafo successivo)
      •   extensions: contiene le principali estensioni PHP, quest'ultime forniscono all'interprete le funzionalità che
          si è scelto di non non compilare direttamente nel "core" dell'interprete. Le più conosciute sono la libreria
          GD2parsing (per la gestione delle immagini), le estensioni per il parsing dell'XML e quelle per
          l'interazione con i vari database. Vanno abilitate decommentando l'apposita riga nel file di configurazione
          php.ini, cosa che vedremo più avanti.
      •   sapi: è una cartella fondamentale poichè contiene i moduli di integrazione per diversi Web Server. Noi
          utilizzeremo php4apache2.dll ma sono presenti anche i moduli per Apache 1.3.x, IIS, Netscape e altri.
      •   php.exe si tratta dell'eseguibile Php/Cgi, per chi non desidera integrare l'interprete PHP come modulo di
          Apache (la modalità di installazione più diffusa e quella che stiamo descrivendo in queste pagine) e
          preferisce programmare lato server alla "vecchia maniera".
      •   php.ini-dist e php.ini-recommended sono i file di configurazione di PHP, rispettivamente quello
          standard e quello più restrittivo. Sceglieremo il secondo e lo rinomineremo php.ini
      •   php4ts.dll: il nocciolo vero e proprio dell'interprete PHP.
Per una descrizione più dettagliata della struttura e dei ruoli dei file PHP vi invito alla lettura delle pagine dedicata
nel manuale ufficiale
PHP 5: la struttura della directory principale è leggermente differente ma per il momento possiamo trascurare
questo aspetto

Rendere Php disponibile nel sistema
Affinchè tutto funzioni dobbiamo rendere nota al sistema la presenza di Php. Per prima cosa dobbiamo inserire nel
PATH di sistema il percorso in cui si trova l'interprete (php4ts.dll o php5ts.dll nel caso di Php 5). Lo
possiamo fare recandoci in Pannello di Controllo / Sistema / Avanzate / Variabili d'ambiente / Variabili di
Sistema, cliccando due volte sulla variabile Path e una volta su Modifica, in fondo alla stringa contenuta nella
variabile Path aggiungiamo ;C:\php, facendo attenzione a separare il valore dal precedente con un punto e
virgola e a non lasciare spazi prima di ;C:\php.
Il manuale dedica alla procedura un'apposita FAQ e la figura 4 mostra una schermata d'esempio.

                                Figura 4. Aggiungere il percorso di Php al Path di sistema

Successivamente, per rendere raggiungibile il modulo per Apache 2, è necessario copiare in C:\php il file
php4apache2.dll (che per ora si trova in C:\php\sapi\).
- Php 5: questa operazione non è necessaria
Infine copiamo il contenuto della directory dlls (C:\php\dlls) nella directory principale (C:\php) e
riavviamo il Pc per rendere attive le nuove impostazioni del Path di sistema.
- Php 5: questa operazione non è necessaria
Al riavvio, digitiamo dal prompt di DOS (si ottiene digitando dal menu Start / Esegui il comando cmd) il
comando php -v, dovremmo ottenere alcune sintetiche informazioni dall'interprete CGI. Ciò non ha nulla a che
fare con la nostra installazione per Apache ma si tratta comunque di un messaggio rassicurante, infatti significa
che il sistema ha tutte le informazioni necessarie su come raggiungere l'interprete Php.
Questa installazione, consigliata dal manuale ufficiale Php, ha il vantaggio di non richiedere lo spostamento di file
nelle directory di sistema (Windows, System32 e altre): infatti modificando la sola variabile di sistema PATH e
mantenenedo i file in c:\php, tutto rimane più ordinato e l'aggiornamento diventa molto più semplice.

Integrazione di Php come modulo di Apache
Semplificando al massimo possiamo dire che il compito di un server Web è quello di ricevere le richieste HTTP
e fornire al client (di solito il browser) il contenuto dei file richiesti. Tuttavia, nel caso dei file con estensione
.php, prima di esaudire la richiesta il Web Server effettua il parsing e l'esecuzione del codice Php contenute nel
file. Affinchè ciò avvenga è necessario che l'interprete si trovi integrato nel Web Server, ed è quanto ci
accingiamo ad illustrare.
Torniamo al file di configurazione di Apache (nel nostro esempio C:\Programmi\Apache
Group\Apache2\conf\httpd.conf), apriamolo con un editor di testo (avete già fatto il backup come
consigliato in precedenza, vero?) scorriamo il testo fino a giungere in fondo all'elenco che contiene una lunga
serie di "LoadModule ..." molti dei quali commentati.
  .
  .
  .
  #LoadModule speling_module modules/mod_speling.so
  #LoadModule status_module modules/mod_status.so
  #LoadModule unique_id_module modules/mod_unique_id.so
  LoadModule userdir_module modules/mod_userdir.so
  #LoadModule usertrack_module modules/mod_usertrack.so
  #LoadModule vhost_alias_module modules/mod_vhost_alias.so
  #LoadModule ssl_module modules/mod_ssl.so
Aggiungiamo al termine della lista le righe seguenti
  #Start Php integration
  LoadModule php4_module "c:/php/php4apache2.dll"
  AddType application/x-httpd-php .php
  PhpIniDir "C:/php"
  #End Php integration
La prima riga indica ad Apache dove trovare il modulo per l'integrazione di Php, la seconda dice che i file con
estensione .php devono essere elaborati attraverso Php. L'ultima istruzione specifica dove vada cercato il file di
configurazione php.ini.
- Php 5: l'httpd.conf deve esere modificato come segue:
Valido solo per Php 5
  # Start Php integration
  LoadModule php5_module "c:/php/php5apache2.dll"
  AddType application/x-httpd-php .php
  PhpIniDir "C:/php"
  # End Php integration
Queste righe non devono trovarsi necessariamente in quella posizione, ma personalmente è più comodo e leggibile
raggruppare tutte le istruzioni in un unico blocco. Un'ultima aggiunta al file httpd.conf è necessaria affinchè
anche il file index.php vada a far parte dei file che il Web Server cerca automaticamente quando viene indicato
il percorso di una directory (ad esempio www.sito.it/miadir/). Scorriamo ancora un po' il file di configurazione
fino a raggiungere questo blocco
  #
  # DirectoryIndex: sets the file that Apache will serve if a directory
  # is requested.
  #
  # The index.html.var file (a type-map) is used to deliver content-
  # negotiated documents. The MultiViews Option can be used for the
  # same purpose, but it is much slower.
  #
  DirectoryIndex index.html index.html.var
è sufficiente modificarlo come segue
DirectoryIndex index.html index.html.var index.php
Salviamo tutte le modifiche e passiamo alla configurazione vera e propria di Php attraverso il file php.ini.

Personalizzazione del file Php.ini
Tornate alla directory C:\php, rinominate il file php.ini-recommended in php.ini. Questo d'ora in poi
sarà il file attraverso il quale potrete modificare alcuni comportamenti dell'interprete Php: consente di abilitare
nuove estensioni, restringere o allentare alcune impostazioni legate alla sicurezza e definire molte altre
impostazioni.
Aprite il file con un editor di testo (ricordiamo sempre di effettuare prima un backup) e, se avete tempo e voglia,
leggete con attenzione i commenti inseriti tra le direttive, si tratta di una vera e propria miniera di informazioni sul
funzionamento di Php. Per il momento dovete applicare solo tre modifiche.
Per prima cosa trovate la direttiva extension_dir
  ; Directory in which the loadable extensions (modules) reside.
  extension_dir = "./"
e cambiatela come segue
  extension_dir = "C:/php/extensions"

In questo modo abbiamo indicato all'interprete dove cercare le estensioni che prima o poi vorremo attivare.
- Php5: la directory che contiene le estensioni si chiama ext, quindi dobbiamo sostituire la riga come segue:
Valido solo per Php 5
extension_dir = "C:/php/ext"
In secondo luogo scorrete ancora il file verso il basso, fino alla blocco seguente
  ; 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
sostituendo Off con On potremo vedere gli errori generati dagli script, caratteristica indispensabile in ambiente
di sviluppo.
In ultimo scendete ulteriormente fino alla direttiva
  ; Argument passed to save_handler. In the case of files, this is the path
  ; where data files are stored. Note: Windows users have to change this
  ; variable in order to use Php's session functions.
  ;session.save_path = /tmp
Questo blocco indica a Php dove salvare i file in cui vengono memorizzati i dati di sessione. Le sessioni sono un
argomento un po' complesso ma sicuramente prima o poi bisognerà servirsene, quindi meglio agire subito e
modificare la riga come segue, eliminando cioè il ";" per decommentare la direttiva.
  session.save_path = C:/php/sessionfiles
sessionfiles è una directory vuota che dovete subito creare in C:\Php (o dove preferite purchè sia dotata di
permessi che consentano a Php la creazione e la scrittura di file al suo interno).

Test finale con phpinfo
A questo punto non resta che riavviare Apache attraverso i tool visti in precedenza (è sempre necessario
riavviare Apache per rendere effettive le modifiche ai file httpd.conf e php.ini, questo perchè l'interprete Php ora è
parte dello stesso Web Server) e controllare che tutto funzioni.
Se non ci sono errori o warning è quasi giunto il momento di festeggiare, non senza testare il primo script .php.
Create dunque nella DocumentRoot (nel nostro esempio C:\www) un file chiamato test.php che contenga una
sola semplicissima riga
la funzione phpinfo() invia all'output una miriade di informazioni sulla configurazione di Php, richiamando la
pagina dal browser (http://localhost/test.php) dovremmo vedere la schermata in figura 5.

                                  Figura 5. Risultato a video della funzione phpinfo

Se qualcosa fosse andato storto, eliminiamo i file httpd.conf e php.ini modificati,
ripristiniamo quelli di backup e ripetiamo tutte le operazioni dall'inizio.

Abilitare le estensioni di Php
Quando compiliamo Php in Linux possiamo scegliere se includere alcune librerie diretamente nel "core"
dell'interprete o se abilitarle come moduli esterni (i cosiddetti "shared objects"), nel caso del pacchetto
precompilato per Windows non abbiamo l'imbarazzo della scelta: tutte le estensioni che non sono ritenute
indispensabili si trovano in file .dll esterni (contenute nella directory extensions descritta nel precedente
paragrafo).
Se desideriamo dotare Php di queste funzionalità aggiuntive è indispensabile attivare le rispettive estensioni nel
file php.ini, decommentando le righe che ci interessano nel lungo elenco di file .dll. Abbiamo già visto che i
commenti si eliminano cancellando il punto e virgola (;) all'inizio della riga.
  ;;;;;;;;;;;;;;;;;;;;;;
  ; Dynamic Extensions ;
  ;;;;;;;;;;;;;;;;;;;;;;
  ;
  ; If you wish to have an extension loaded automatically, use the following
  ; syntax:
  ;
  ;   extension=modulename.extension
  ;
  ; For example, on Windows:
  ;
  ;   extension=msql.dll
  ;
  ; ... or under UNIX:
  ;
  ;   extension=msql.so
  ;
  ; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
  ; extension_dir directive above.
Con ogni probabilità vorremo attivare almeno l'estensione php_gd2.dll per la gestione delle immagini. Esiste
inoltre una serie di estensioni che non vengono incluse nel package standard Php (in quanto sono in continua
evoluzione), queste librerie vanno a comporre il grande serbatoio del PECL (si veda anche il nostro articolo
dedicato a Pear e Pecl).
Le versioni precompilate per Windows sono scaricabili dal sito snaps.php.net; se, ad esempio, volessimo dotare
Php 4 del supporto per il database SQLite (una sorta di Ms Acces ma open source e disponibile di default in Php
5) dovremmo scaricare il file php_sqlite.dll , copiarlo in C:\php\extensions e inserire nel file php.ini
l'istruzione:
  extension=php_sqlite.dll
Dopo aver riavviato il Web Server il solito phpinfo() ci dirà se l'estensione è stata abilitata con successo o meno.
Per maggiori informazioni su SQLite consigliamo la lettura degli articoli Php e SQLite, una piccola grande novità
e SQLite: mini-guida all'uso, pubblicati entrambi su HTML.it.
- Php 5: SQLite è integrato nel core dell'interprete e le estensioni PECL sono disponibili direttamente in
www.php.net ("Collection of PECL modules")

Installazione di MySQL 4.1
Un sito dinamico privo di database è ben poca cosa, quindi procediamo con l'ultimo passo fondamentale nella
configurazione del nostro ambiente di sviluppo WAMP.
Scaricate dal sito ufficiale il package denominato Windows Essentials (x86) (file mysql-essential-
4.1.15-win32.msi), eseguitelo e procedete all'installazione.
Avanzate velocemente "a suon di click" scegliendo l'installazione "Typical" e accettate il percorso di
installazione proposto di default (C:\Programmi\MySQL\MySQL Server 4.1). Se avete fretta saltate la
registrazione a Mysql.com cliccando su Skip e successivamente scegliete Configure MySQL Server Now optando
per la Standard Configuration
Decidete di installare il Database sia come servizio di Windows (si avvierà automaticamente al'avvio del pc) ma
anche di poterlo utilizzare da linea di comando. Quindi spuntate sia il checkbox Install as Windows Service sia
quello Include Bin Directory in Windows PATH (Figura 6)

                                    Figura 6. Installazione di MySQL come servizio

Inserite a questo punto due volte la password di root (amministratore) senza abilitare l'accesso anonimo (è vero
che siamo in locale, ma meglio non prendere brutte abitudini). Cliccando su Next e poi su Finish avremo portato a
termine l'installazione (Figura 7).
Figura 7. Scelta della password di amministratore

A questo punto con buona probabilità riceveremo un alert dovuto ad un errore di connessione (Figura 8): se così
fosse, l'errore dipende dal firewall di Windows, e la soluzione è inserire MySQL tra le eccezioni del Firewall
raggiungibili dal pannello di controllo di Windows.

                              Figura 8. Il possibile errore dovuto al firewall di Windows

Per includere MySQL nelle eccezioni del Firewall fate così: Pannello di controllo / Centro
sicurezza PC / Gestione impostazioni protezione per Windows Firewall / Eccezioni / Aggiungi
programma e aggiungete mysql-nt.exe (nel nostro esempio C:\Programmi\MySQL\MySQL
Server 4.1\bin\mysqld-nt.exe) tra i programmi consentiti. Dopo aver salvato le opzioni
tornate all'alert di errore e cliccate su Retry e .. et voilà tutto dovrebbe andare per il verso giusto:
anche MySQL 4.1 è installato, vedremo più avanti come sia possibile gestirlo.
Installazione di MySQL 5.0
Per gli amanti delle novità ecco come procedere all'installazione della recente release 5.0 che, grazie alle nuove
funzionalità, rappresenta una svolta epocale per gli utilizzatori di questo diffusissimo Database. Descriveremo
questa installazione come alternativa alla precedente, anche se è possibile far convivere le due
versioni modificando la porta di default (3306) di una delle due installazioni.

I passaggi di installazione
     1. Scaricate dal sito ufficiale il package denominato Windows Essentials (x86) di MySQL 5 (file mysql-
        essential-5.0.19-win32.msi)
     2. Avviate il file e scegliete di procedere con l'installazione tipica e cliccate su Next
     3. Selezionate Detailed Configuration, soluzione che ci consentirà configurare, almeno in parte, il Database
        sin dall'installazione come evidenziato dalla Figura 9. Ogni scelta sarà comunque rivedibile
        successivamente.

                                    Figura 9. Selezione dell'opzione di configurazione

     4. Visto che stiamo configurando un ambiente di sviluppo in locale scegliete l'opzione Developer Machine,
        che consente di risparmiare sulle risorse consumate dal database.
     5. Sempre per una questione di risorse indicate che il numero massimo di connessioni contemporanee che
        possiamo attenderci è 20 (Decision Support DSS/OLAP)
     6. Al passaggio successivo selezionate Multifunctional Database: le opzioni alternative ci costringerebbero
        a scegliere tra le tradizionali tabelle di tipo MyISAM e l'InnoDB storage engine (che fornisce il
        supporto per le transazioni).
     7. Decidete di consentire l'accesso al database anche attraverso le connessioni di rete, utilizzando la porta di
        default 3306 (Figura 10)
Figura 10. Impostazioni delle connessioni di rete

     8. Al momento di decidere sul tipo di carattere da utilizzare selezionate Best Support For Multilingualism,
        il charset di default diverrà UTF-8
     9. Come nel caso di MySQL 4.1 installate il Database come servizio di Windows e inserite il percorso dei
        binari nel PATH di Windows.
     10. Anche in questo caso il firewall potrebbe dare qualche problema, facilmente risolvibile come già
         descritto al punto nella lezione precedente.

Utilizzare MySQL con Php 5
Php 5 consente di sfruttare a pieno tutte le nuove funzionalità delle versioni superiori alla 4.1.3 di MySQL 4 e di
MySQL 5.0 attraverso l'estensione MySQLi (MySQL Improved).
Come per le altre estensioni è sufficiente aggiungere una riga al php.ini (vedi il precedente paragrafo
"Abilitare le estensioni")
  extension=php_mysqli.dll
In ogni caso la versione più aggiornata delle librerie client di Php per MySQL non è quella di Php.net, ma
quella altrettanto autorevole rilasciata da MySQL AB: è reperibile alla pagina dei downloads, dove è possibile
scaricare sia la libreria classica Mysql sia la già citata Mysqli (entrambe disponibili solo per Php 5).
Per un approfondimento su MySQLi consigliamo la lettura di due articoli del sito Zend.com. Per un
approfondimento su MySQL 5 vi invitiamo a leggere gli articoli in corso di pubblicazione nella sezione Database
di HTML.it.

Problemi tra MySQL 4.1 e superiori e Php 4
Se abbiamo installato Php 4 dovremo accontentarci della meno eccitante API Php/MySQL che, essendo integrata
nell'interprete, non richiede attivazione nel php.ini. Tuttavia, se non applicheremo alcuni accorgimenti, al
primo tentativo di connessione ci si presenterà inevitabilmente il seguente errore
"Client does not support authentication protocol requested by server; consider upgrading MySQL client "
Infatti MySQL 4.1 e 5.0 utilizzano un protocollo di autenticazione basato su un nuovo algoritmo di hashing delle
password che è incompatibile con quello delle precedenti librerie client. La soluzione è riscrivere le password
ricodificandola con la funzione OLD_PASSWORD, ecco come. Seguite il percorso Start / Programmi / MySQL
 Server / MySQL Command Line Client ed eseguite i comandi evidenziati in rosso nel seguente pannello:
  Enter password: *******
Welcome to the MySQL monitor. Commands end with ; or \g.
  Your MySQL connection id is 2 to server version: 5.0.19-nt

  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  mysql> select host,user, password from mysql.user ;
  +-----------+------+------------------+
  | host      | user | password         |
  +-----------+------+------------------+
  | localhost | root | 0bacf8382922b507 |
  +-----------+------+------------------+
  1 row in set (0.17 sec)

  mysql> UPDATE mysql.user SET PASSWORD=OLD_PASSWORD('miapass') WHERE host='localhost'
  AND user='root' ;
  Query OK, 0 rows affected (0.03 sec)
  Rows matched: 1 Changed: 0 Warnings: 0

  mysql> FLUSH PRIVILEGES ;
  Query OK, 0 rows affected (0.01 sec)

  mysql>
Nelle righe precedenti abbiamo sovrascritto la password di root ricodificandola, successivamente abbiamo
aggiornato i privilegi sul database per rendere effettiva la modifica. Ora sarà possibile utilizzare le ultime release
di MySQL anche con Php 4 come client.

Amministrare MySQL
MySQL è molto "user friendly" ed è sempre possibile riconfigurare il database recandosi nel menu di Windows
in
Start / Programmi / MySQL / MySQL Server, utilizzando il "MySQL command line Client" possiamo anche
amministrare il server di database dal prompt di DOS, ma perchè precluderci la comodità di un tool di
amminsitrazione visuale?
Ancora oggi il più completo strumento di amministrazione per MySQL rimane PhpMyAdmin, tuttavia si tratta di
un software interamente realizzato in Php e come tale soffre di qualche limitazione (nell'importazione di grandi
quantità di dati e altre pecche legate alla sua natura prettamente WEB). Un tempo esisteva l'ottimo MySQL
Front, progetto abbandonato e poi usurpato e reso a pagamento dal furbacchione di turno. MySQL AB mette a
disposizione due tool scarni ma efficienti, con funzionalità differenti e complementari: MySQL Administrator, per
le operazioni di importazione, esportazione, gestione degli utenti, recupero dei dati e gestione dei database in
genere; MySQL Query Browser, per la gestione delle tabelle e l'esecuzione di query mirate.
Chi però è alla ricerca di uno strumento "all in one", free e diverso da PhpMyAdmin, può ricorrere alla versione
"lite" dell'ottimo EMS SQL Manager for MySQL: non è completo come PhpMyAdmin o l'accoppiata precedente
ma svolge al meglio tutte le principali mansioni. Inoltre i più esigenti possono sempre ricorrere alla completissima
versione a pagamento.

Installazione e configurazione base di phpMyAdmin
Poichè PhpMyAdmin è lo strumento di amministrazione fornito da quasi tutti i servizi di hosting ci sembra utile
descriverne l'installazione e la configurazione anche in locale. Dopo aver scaricato l'ultima release dal sito del
progetto , scompattiamo il package compresso (al momento in cui scriviamo phpMyAdmin-2.8.0.2.zip) in
un'apposita directory all'interno della root del Web Server. Diamole un nome molto originale... tipo
"phpMyAdmin".
Preleviamo dalla sottodirectory libraries il file config.default.php, inseriamolo nella directory principale
(phpMyAdmin) e rinominiamolo in config.inc.php. Questo è il nome del file di configurazione che il
software utilizzerà, le opzioni possibili sono molte e sono tutte contenute in un array, ma a noi basterà settarne un
paio. Apriamo il file con un editor di testo e cerchiamo le seguenti righe
  $cfg['Servers'][$i]['auth_type']                 = 'config';        // Authentication method (config,
  http or cookie based)?
  $cfg['Servers'][$i]['user']                      = 'root';              // MySQL user
$cfg['Servers'][$i]['password']                 = '';               // MySQL password (only needed
  with 'config' auth_type)
Inseriamo la password utilizzata dall'utente root nel campo $cfg['Servers'][$i]['password'], ed il
gioco è fatto. Digitando nel browser localhost://phpMyAdmin/ visualizzeremo una pagina Web come quella in
figura 11.

                              Figura 11. La homepage di PhpMyAdmin dopo l'installazione

Come abbiamo visto l'installazione base è davvero molto semplice, ma non facciamoci ingannare: phpMyAdmin è
uno strumento molto completo e complesso sul quale si sono scritti decine di articoli e persino un paio di libri. Le
possibilità di configurazione e di utilizzo sono molte ma una descrizione adeguata ci porterebbe davvero lontano,
quindi invito i lettori a fare riferimento alla documentazione ufficiale.
Una cosa è però da aggiungere: per evitare di combinare guai per errore, possiamo anche nascondere i database di
sistema dichiarandoli nel file di configurazione $cfg['Servers'][$i]['hide_db'] ="mysql|
information_schema"; in questo modo potremo agire solo sul database Test e su quelli da noi creati.

Installazione di PEAR
PEAR è il "repository" ufficiale di classi Php, è un'utile integrazione del nostro ambiente di sviluppo in quanto
comprende numerosi tool che altrimenti il programmatore dovrebbe realizzare da solo: per questa ragione i file
per l'installazione di PEAR vengono distribuiti con il package di installazione Php.
Ci siamo già occupati di PEAR in un precedente articolo ma mentre in quel caso abbiamo descritto un metodo di
installazione via Web (e quindi universale) utile su uno spazio Web remoto, in questa occasione spiegheremo
come includere PEAR nell'ambiente Wamp agendo da linea di comando come avviene in Unix. Ecco i passaggi
da seguire:
     1. Nella directory in cui si trova la nostra installazione Php (c:/php) è presente il file go-pear.bat,
        non dobbiamo fare altro che lanciarlo (cliccandolo) e seguire le istruzioni (figura 12). Dobbiamo essere
        connessi a Internet perchè lo script si connettera al repository di classi e effettuerà il download di alcuni
        packages di base.
Figura 12. Procedura di installazione di PEAR

     2. Ci verrà chiesto se vogliamo indicare un eventuale proxy per la connessione (con buona probabilità non è
        il vostro caso) e successivamente se intendiamo modificare il percorso di installazione dei packages. A
        meno che non abbiate esigenze particolari mantenete il percorso di default (nel nostro caso
        c:/php/PEAR) , è lì che verranno salvate le classi che di volta in volta andremo a installare.
     3. Procediamo rispondendo affermativamente a tutte le richieste: verranno installati i pacchetti base (DB,
        Net_Socket, Net_SMTP, Mail, XML_Parser, PhpUnit) .
     4. Il prompt ci ricorderà che, nel caso non sia già definito, dovremo indicare nel file php.ini quale sia il
        percorso PEAR. È sufficiente modificare in php.ini la direttiva include_path in modo tale che
        comprenda anche il percorso c:/php/PEAR. In questo modo non ci sarà bisogno di includere ogni volta
        l'intero path fisico assoluto delle classi che utilizzeremo.
  ; Windows: "\path1;\path2"
  ;include_path = ".;c:\php\includes"
Modifichiamolo come segue e riavviamo il Web Server
  ; Windows: "\path1;\path2"
  include_path = ".;c:\php\includes;c:\php\PEAR"
     5. D'ora in poi per amministrare i package PEAR sarà sufficiente digitare nel prompt di DOS
  C:\>pear [istruzione] ;
pear help fornirà una lista completa delle opzioni disponibili, rinviamo i lettori alla lettura dell'articolo già
citato per un approfondimento.

Ambiente di produzione vs ambiente di sviluppo
Con un completo ambiente di sviluppo Php presente nel nostro PC siamo pronti a testare gli script in locale
prima di caricarli sul server remoto, per completezza dobbiamo però sottolineare che quello descritto in questa
guida non è il metodo consigliato di utilizzare Php in ambiente di produzione Windows.
Alcuni fornitori di hosting mettono a disposizione Php anche nella configurazione Windows + IIS (infatti, seppur
con alcune differenze, gli script sono perfettamente in grado di operare anche attraverso il Web Server ufficiale di
Microsoft) in questi casi tuttavia la configurazione tipica (e consigliata) non vede l'interprete Php integrato nel
Web Server (filtro ISAPI), bensì Php viene richiamato come programma esterno attraverso il protocollo CGI.
La stessa Zend ha rilasciato appositamente ZEND Core (in precedenza Zend Win Enabler), una release Php
proprietaria che, sfruttando il protocollo FAST CGI consente di installare in Windows una versione stabile di Php
che non penalizza le prestazioni. L'installazione presa in esame in questa guida è quella che consente di riprodurre
in Windows un ambiente quanto più simile possibile a quello che di solito troviamo in hosting, cioè Php come
modulo di Apache su macchina con OS Unix-like.
Puoi anche leggere