1 26/04/2026 5 min

Su Windows la domanda “PHP è installato?” ha una risposta solo se distingui runtime, integrazione col web server e versione realmente esposta. Puoi avere PHP presente nel sistema ma non nel PATH, installato per IIS ma non per Apache, oppure attivo in console ma non nel sito. Quindi il controllo corretto non è uno solo: va fatto su tre livelli.

Se devi verificare in fretta, parti dalla CLI con php -v. Se il comando non esiste, passa al percorso del binario e al PATH. Se il comando funziona ma il sito non risponde con PHP, il problema è quasi sempre nell’handler del server web o nel pool applicativo. Se invece vuoi una conferma definitiva, crea una pagina di test con phpinfo() e confronta il risultato con la versione restituita da terminale.

Controllo più rapido: PHP dalla riga di comando

Apri Prompt dei comandi o PowerShell e verifica se il comando è disponibile:

php -v

Se PHP è installato correttamente e raggiungibile dal PATH, vedrai qualcosa di simile:

PHP 8.2.12 (cli) (built: Oct  3 2024 14:22:11) (ZTS Visual C++ 2019 x64)

Se invece ottieni un errore del tipo 'php' is not recognized as an internal or external command, non significa automaticamente che PHP manchi. Significa solo che Windows non trova il binario nel PATH corrente. In quel caso verifica dove è stato installato.

Le installazioni tipiche si trovano in percorsi come questi:

C:\php\php.exe
C:\xampp\php\php.exe
C:\wamp64\bin\php\php8.x.x\php.exe

Puoi cercare il binario con PowerShell:

Get-ChildItem -Path C:\ -Filter php.exe -Recurse -ErrorAction SilentlyContinue

Se il comando trova un eseguibile, PHP è presente sul disco. A quel punto il nodo da chiarire è se sia configurato correttamente nel PATH o se il web server stia usando un’altra copia del binario.

Verifica del PATH: quando PHP c’è ma non si vede

Molti ambienti Windows hanno PHP installato, ma il terminale non lo trova perché la cartella non è inclusa nelle variabili d’ambiente. Per controllare il PATH corrente:

echo %PATH%

In PowerShell puoi usare anche:

$env:Path

Se il percorso della cartella di PHP non compare, il comando php non sarà eseguibile da shell. La correzione più pulita è aggiungere la cartella contenente php.exe al PATH di sistema o utente, poi aprire una nuova sessione del terminale.

Per verificare quale eseguibile viene risolto da Windows, usa:

where php

Se il risultato mostra più percorsi, il sistema potrebbe usare una versione diversa da quella che ti aspetti. Questo succede spesso su macchine con XAMPP, WAMP, PHP manuale e strumenti di sviluppo installati insieme. In pratica, non basta sapere che PHP esiste: devi sapere quale PHP viene eseguito.

Conferma dal web server: PHP è davvero attivo sul sito?

La verifica da console non basta se il tuo obiettivo è capire se PHP funziona su IIS, Apache o Nginx con FastCGI. Il controllo più affidabile è una pagina PHP servita dal web server. Crea un file, ad esempio info.php, nella root del sito:

<?php
phpinfo();

Apri poi il file dal browser, ad esempio:

http://localhost/info.php

Se il browser mostra la pagina di informazioni PHP, il server web sta inoltrando correttamente le richieste al motore PHP. Se invece scarica il file o mostra il sorgente, il mapping non è configurato. Se restituisce errore 404, il file non è nella document root corretta. Se restituisce 500, il problema è nell’handler, nei permessi o nel pool applicativo.

Questa verifica è più utile di qualsiasi supposizione perché ti dice non solo se PHP è installato, ma se è operativo nel contesto del sito. È la differenza tra “il binario esiste” e “l’applicazione può usarlo”.

Controllo su IIS: cosa guardare quando PHP non risponde

Su IIS, PHP viene quasi sempre eseguito tramite FastCGI. Se la pagina di test non funziona, il punto da controllare è la configurazione dell’handler e non solo la presenza del file php.exe.

Verifica in IIS Manager questi elementi:

  • Handler Mappings: deve esistere una mappatura per *.php verso PHP FastCGI.
  • FastCGI Settings: il percorso al binario PHP deve essere corretto.
  • Application Pool: deve essere avviato e con identity adeguata.
  • Permessi NTFS: l’identity del pool deve poter leggere il binario e i file del sito.

Se preferisci un controllo da shell, puoi ispezionare i processi e cercare il binario PHP in esecuzione:

tasklist | findstr /i php

Se non compare nulla, non è detto che PHP sia assente; potrebbe semplicemente non esserci traffico verso un sito PHP o il mapping potrebbe essere rotto.

Un altro controllo utile è verificare i log di IIS, tipicamente sotto:

C:\inetpub\logs\LogFiles\

Se trovi errori 500 o 502 in corrispondenza della richiesta a info.php, il problema è quasi sempre in FastCGI, nei permessi o nella versione PHP scelta. In questo caso la presenza del binario non basta a dire che PHP sia “installato bene” per quel sito.

Controllo su Apache: modulo, handler e versione effettiva

Con Apache il punto decisivo è capire se PHP è caricato come modulo oppure eseguito tramite CGI/FastCGI. Su Windows, molti ambienti usano XAMPP o installazioni manuali con php8apache2_4.dll oppure con proxy verso PHP-FPM/FastCGI. La verifica cambia a seconda dell’architettura, ma il principio è lo stesso: il file php.exe da solo non basta.

Controlla il file di configurazione di Apache, ad esempio:

C:\Apache24\conf\httpd.conf

oppure i file inclusi nella directory conf\extra. Cerca righe come queste:

LoadModule php_module