PHP è un linguaggio di programmazione che consente di creare siti web dinamici (blog, eCommerce, ecc.), web API di supporto alle app per dispositivi mobili e molto altro. In questa guida vederemo come installare PHP 8 sul PC Windows 10 e come configurare Apache HTTP Server con PHP.
Trattazione aggiornata a PHP 8 e ri-verificata per funzionare al meglio sulle versioni moderne di Windows 10
In questo articolo ci concentreremo, nello specifico, sull'installazione di PHP in ambiente Windows. Per la guida equivalente incentrata su Linux:
» Leggi: La Grande Guida ad Apache, MySQL, PHP
Come sempre, ci riferiremo al programma "Apache HTTP Server" chiamandolo (impropriamente) solo "Apache", per brevità e per conformarci al nome usato nel quotidiano.
La procedura è stata testata con Windows 10 Home e Pro x64 (64 bit), ma è analoga per tutte le generazioni di Windows.
Passo 1: Installare le librerie Microsoft Visual C++
Prima di installare PHP su Windows è necessario installare il pacchetto Microsoft Visual C++, scegliendo la compilazione a 64 bit (x64) oppure 32 bit (x86) a seconda che sia in uso Windows a 64 oppure 32 bit:
- con Windows a 64 bit: Microsoft Visual C++ 64 bit
- con Windows a 32 bit: Microsoft Visual C++ 32 bit
Non sottovalutate questo passaggio preliminare! Senza le librerie Microsoft Visual C++, infatti, PHP si blocca all'avvio mostrando un errore simile a L'esecuzione del codice non può proseguire perché VCRUNTIME140.dll non è stato trovato
.
Passo 2: Scaricare PHP per Windows
Procediamo ora a scaricare PHP per Windows dal sito ufficiale:
» Download: PHP per Windows
Dalla pagina indicata, dobbiamo prelevare lo zip relativo all'ultima versione disponibile (le nuove release sono inserite in alto nella lista) scegliendolo fra molte varianti.
Per usare PHP con Apache (come faremo nel prosieguo della guida), scaricare uno dei seguenti:
- con Windows a 64 bit: scaricare il file
x64 Thread Safe
- con Windows a 32 bit: scaricare il file
x86 Thread Safe
Sì, l'indicazione è diversa rispetto al passato. Oggi, con le versioni moderne di PHP e Apache per Windows, è necessario scegliere il pacchetto Thread Safe
Se invece vuoi utilizzare PHP con il web server IIS al posto di Apache, devi scegliere uno dei file Non Thread Safe
. Non ho però approfondito questo scenario: il resto della guida è incentrata su PHP+Apache.
Passo 3: Estrazione dei file e spostamento della cartella
- Scompattiamo il file zip appena scaricato in una cartella temporanea a piacere
- Rinominiamo la cartella in
PHP
- Spostiamo la cartella nella directory
Programmi
di Windows, ovveroC:\Program Files\PHP
Passo 4: Rinominare php.ini
php.ini
è il file di configurazione di PHP che contiene molteplici impostazioni. Questo file non è presente di default all'interno dell'archivio zip. Al suo posto, troviamo:
php.ini-development
: è il filephp.ini
consigliato per lo sviluppo localephp.ini-production
: è il filephp.ini
consigliato per il rilascio sul server "di produzione", ovvero quello accessibile dal pubblico
Procediamo dunque a rinominare quello più appropriato in php.ini
, togliendo dunque il suffisso. Nella stragrande maggioranza dei casi, questo si riduce a rinominare php.ini-development
in php.ini
Passo 5: Attivare le estensioni
Procediamo ora ad aprire lo stesso file php.ini
con il Blocco note. È infatti opportuno attivare immediatamente alcune estensioni di PHP di uso comune che ci serviranno sicuramente in seguito.
Allo scopo, iniziamo cercando il testo extension_dir = "ext"
. Se questa direttiva inizia con un punto e virgola (;
) significa che è disattivata. Procediamo dunque ad eliminare il ;
iniziale
Cerchiamo ora il testo extension=bz2
per trovare rapidamente la sezione dedicata alle singole estensioni attivabili. Anche in questo caso, vogliamo eliminare il carattere ;
ad inizio riga dalle seguenti:
extension=curl
extension=fileinfo
extension=gd2
extension=gettext
extension=intl
extension=mbstring
extension=mysqli
extension=openssl
extension=pdo_mysql
Altre estensioni potranno essere abilitate alla bisogna.
Salvare e chiudere il file.
Passo 6: Aggiungere PHP al PATH
Procediamo ora ad aggiungere la cartella di PHP alla variabile PATH
di Windows. In questo modo, potremo successivamente lanciare correttamente comandi come composer
o symfony
. La procedura da seguire è stata mostrata qui:
Se avete seguito la mia raccomandazione precedente, si tratta di C:\Program Files\PHP
Per sincerarvi che l'operazione sia andata a buon fine basta aprire il Prompt dei comandi (ricordate di aprire una nuova istanza, non usate un Prompt dei comandi aperto in precedenza) e impartire php --version
. Se il messaggio è simile a PHP 8.0.0 (cli)
, significa che è tutto a posto
Passo 7: Installare Apache
Arrivati a questo punto, l'installazione di PHP è già terminata. Non siamo però ancora pronti a lavorare.
L'interprete PHP non risponde direttamente alle richieste dei browser web che visitano il nostro sito. Questo compito spetta al web server (Apache, nel nostro caso). Il flusso è il seguente:
- l'utente visita una pagina del nostro sito tramite il suo browser web
- Apache riceve la richiesta
- se si tratta di una pagina .php, Apache passa il file all'interprete PHP
- l'interprete PHP elabora il file e ritorna l'HTML "fatto e finito" ad Apache
- Apache ritorna l'HTML al browser dell'utente
Se ancora non avete installato Apache, dovete farlo ora seguendo queste indicazioni:
» Leggi: Come installare Apache su Windows 10 e trasformare il PC in un server web: la Guida Definitiva
Nel prosieguo darò per scontato che abbiate installato Apache seguendo le indicazioni fornite nella guida dedicata e che siate riusciti a visualizzare la pagina HTML statica di esempio
Passo 8: Scaricare mod_fcgid
Ci sono vari modi per consentire ad Apache e PHP di comunicare. Tradizionalmente si usa il modulo per Apache mod_php
, che incorpora già l'intero interprete PHP. Questo approccio è però sconsigliato, poiché consuma parecchia RAM e non consente di sfruttare il multithreading di Apache. Per configurare Apache e PHP sotto Windows in modo ottimale ci serve un altro modulo che consenta ad Apache di interfacciarsi con PHP tramite il protocollo FastCGI. Allo scopo, scarichiamo mod_fcgid
:
» Download: mod_fcgi per Apache (Windows)
Localizziamo la sezione intitolata mod_fcgid
(è la prima della lista) e scarichiamo la versione appropriata al nostro PC:
- con Windows a 64 bit: scaricare il file
winx64
- con Windows a 32 bit: scaricare il file
win32
Passo 9: Installare mod_fcgid
Una volta scompattato il .zip appena ottenuto in una cartella temporanea a piacere, scorriamola fino a trovare il file mod_fcgid.so
: è l'unica cosa che ci interessa di tutto il pacchetto
Spostiamo mod_fcgid.so
nella sottocartella modules
di Apache. Se avete seguito le indicazioni fornite nella guida ad Apache su Windows, sarà C:\Program Files\Apache\modules
.
Prestate attenzione ad estrarre nel percorso giusto! Il file deve finire dentro la sottocartella modules
, non immediatamente dentro ad Apache
!
Passo 10: Scaricare apache_php-fcgid.conf
Scarichiamo ora il file di configurazione per Apache che "attiva" il modulo mod_fcgid.so
:
» Download: apache_php-fcgid.conf
Al termine, spostiamo questo file all'interno della sottodirectory conf
di Apache: se avete seguito le indicazioni della guida ad Apache, si tratta di C:\Program Files\Apache\conf
.
Prestate attenzione ad estrarre nel percorso giusto! Il file deve finire dentro allasottocartella conf
, non immediatamente dentro ad Apache
!
Passo 11: Caricare il file di configurazione
Ora che il file apache_php-fcgid.conf
è al posto giusto, dobbiamo farlo caricare ad Apache. Apriamo dunque il file httpd.conf
presente nella stessa cartella C:\Program Files\Apache\conf
.
Possiamo aggiungere la direttiva necessaria al caricamento del nuovo file di configurazione dove preferiamo. Ad esempio: prima delle istruzioni # Virtual Hosts
. La stringa da aggiungere è la seguente:
# PHP
Include conf/apache_php-fcgid.conf
Passo 12: Rimuovere DirectoryIndex
Dobbiamo apportare un'altra modifica allo stesso file httpd.conf
.
La direttiva DirectoryIndex
stabilisce quale file restituire quando l'utente richiede via browser una directory oppure il dominio del nostro sito senza indicare un file specifico (http://miosito.com
). Di default, Apache restituisce index.html
, ma per generare dinamicamente la pagina con PHP dobbiamo usare index.php
.
Il file apache_php-fcgid.conf
include già la direttiva configurata in modo opportuno, ma per renderla effettiva dobbiamo eliminare manualmente il default. All'interno dello stesso httpd.conf
, cercare DirectoryIndex
quindi cancellare completamente tutte le istruzioni e i commenti compresi fra queste frasi (estremi compresi):
# DirectoryIndex: sets the file that Apache...
...
</IfModule>
Salvate le modifiche e chiudete il file: qui abbiamo finito.
Passo 13: Riavviare Apache
Procediamo ora a riavviare il servizio di Apache tramite linea di comando ("C:\Program Files\Apache\bin\httpd.exe" -k restart
) oppure con Apache Service Monitor
Passo 14: index.php
Se già non l'avete fatto, scaricate il pacchetto HTML e PHP di esempio:
» Download: File index per test web server
Scompattatelo nella cartella che contiene il vostro sito e otterrete il file index.php
di test.
Passo 15: Test di PHP
Tutto è pronto: apriamo il browser web e digitiamo l'URL del nostro sito locale (http://localhost, ad esempio) per visitare il sito in esecuzione sul PC stesso. Se tutto funziona correttamente, vedrete la pagina di test
[se state usando la vecchia versione "classica" di Microsoft Edge e http://localhost non risponde, seguite questa guida: Microsoft Edge e sito locale (http://localhost) che non si apre: come risolvere l'errore con Apache o IIS]
Notate la data mostrata a centro pagina: se viene visualizzata correttamente, significa che PHP sta funzionando correttamente ed avete concluso
Se lo spazio dopo la freccia rimane bianco, invece, c'è qualcosa che non va. La primissima cosa da fare è assicurasi di aver riavviato Apache, quindi ripercorrere i vari Passi di questo articolo fino ad individuare l'errore.
Cosa fare ora?
Arrivati a questo punto, PHP è installato e funzionante in ambiente Windows. Probabilmente, però, vorremo installare anche un database come MySQL, indispensabile per eseguire un gestore di contenuti (CMS) come WordPress o pressoché qualsiasi altra cosa. Per il resto della guida: