Per eseguire un file PHP, apri un terminale nella sua cartella e digita php index.php. PHP esegue il file e stampa il suo output nel terminale. Per vedere una pagina PHP in un browser, avvia il server integrato con php -S localhost:8000 e apri http://localhost:8000.
php index.php
Un primo index.php può essere di una sola riga. Premi Run: questo è esattamente ciò che stampa php index.php.
Il codice PHP va dopo il tag <?php. Tutto ciò che sta prima di quel tag viene stampato come testo semplice, ed è così che PHP mescola codice e HTML.
Eseguire un file PHP da riga di comando
La CLI di PHP (command line interface) esegue uno script una volta e termina. Ti serve PHP installato; se php -v stampa un errore, vedi prima installare PHP.
cd ~/projects/hello
php index.php # run the file
php -l index.php # only check the syntax ("lint")
php index.php > out.txt # save the output to a file
php -l è utile prima di caricare un file: segnala un errore di sintassi con il numero di riga, oppure No syntax errors detected in index.php.
Passare argomenti con $argv
Le parole dopo il nome del file arrivano in $argv. $argv[0] è sempre il nome dello script stesso e $argc è il conteggio, nome compreso. Qui il blocco gira senza argomenti aggiuntivi, quindi c'è solo il nome:
Sul tuo computer, php index.php Ada 3 stampa il saluto tre volte. I valori di ripiego con ?? tengono in piedi lo script quando manca un argomento. Per opzioni con nome come --name=Ada, usa getopt:
<?php
// php index.php --name=Ada --verbose
$opts = getopt('', ['name:', 'verbose']);
echo "Hello, " . ($opts['name'] ?? 'world') . "\n";
if (isset($opts['verbose'])) {
echo "Verbose mode\n";
}
Eseguire PHP nel browser con php -S
PHP ha un web server di sviluppo integrato. Avvialo nella cartella con i tuoi file:
php -S localhost:8000
[Sat Oct 3 07:21:34 2026] PHP 8.3.19 Development Server (http://localhost:8000) started
Ora http://localhost:8000/ esegue index.php, e http://localhost:8000/about.php esegue about.php. Ogni caricamento di pagina esegue di nuovo il file, con la query string in $_GET. Il blocco qui sotto si comporta allo stesso modo: eseguilo, poi clicca un link, e lo script gira di nuovo con $_GET['page'] impostato.
Opzioni utili:
php -S localhost:8000 -t public # serve the public/ folder as the web root
php -S 0.0.0.0:8000 # reachable from other devices on your network
php -S localhost:8000 router.php # send every request through router.php
Il server integrato gestisce una richiesta alla volta ed è pensato solo per lo sviluppo. In produzione PHP gira dietro Nginx o Apache, di solito tramite PHP-FPM.
Verificare come è stato avviato lo script
PHP_SAPI ti dice quale "server API" esegue lo script: cli in un terminale, cli-server sotto php -S, e fpm-fcgi o apache2handler dietro un vero web server. Gli script che devono girare solo da terminale lo controllano per prima cosa:
Eseguire una sola riga con php -r
Per un test veloce non ti serve un file. php -r esegue il codice che gli passi, senza il tag <?php:
php -r 'echo date("Y-m-d"), PHP_EOL;'
php -r 'var_dump(0.1 + 0.2 == 0.3);'
Nel cmd di Windows, racchiudi il codice tra virgolette doppie e usa le virgolette singole al suo interno. Per più righe, php -a apre una shell interattiva in cui ogni istruzione viene eseguita quando premi Invio.
Rendere eseguibile uno script su macOS e Linux
Aggiungi una riga shebang prima di <?php e rendi il file eseguibile. La riga shebang non viene stampata:
#!/usr/bin/env php
<?php
echo "Backup started\n";
chmod +x backup.php
./backup.php
È così che gli script PHP girano da cron: 0 3 * * * /usr/bin/php /home/me/backup.php.
Codici di uscita per gli script
Uno script da riga di comando comunica successo o fallimento tramite il codice di uscita, che gli script di shell e cron possono controllare. exit(0) significa successo, qualsiasi altro numero significa fallimento:
<?php
$file = $argv[1] ?? '';
if (!is_file($file)) {
fwrite(STDERR, "File not found: $file\n");
exit(1);
}
echo "Processing $file\n";
exit(0);
Errore comune: eseguire il file o la cartella sbagliati
Could not open input file: index.php significa che PHP non trova il file a partire da dove si trova il terminale. Controlla la cartella corrente con pwd (oppure cd su Windows) e fai cd nel progetto oppure dai il percorso completo: php ~/projects/hello/index.php. Con php -S, un 404 per una pagina che sai esistere di solito significa che il server è stato avviato in un'altra cartella; fermalo con Ctrl+C e riavvialo nel posto giusto, oppure passa la cartella con -t. Quando il file gira ma stampa una pagina bianca, attiva la segnalazione degli errori per vedere cosa è andato storto.
Domande frequenti
Come eseguo un file PHP nel browser?
Avvia il server integrato nella cartella che contiene il file con php -S localhost:8000, poi apri http://localhost:8000/yourfile.php. Aprire il file direttamente dal disco non funziona, perché nessuno esegue il codice PHP.
Come passo argomenti a uno script PHP?
Scrivili dopo il nome del file: php report.php 2026 sales. Dentro lo script, $argv è l'array ['report.php', '2026', 'sales'] e $argc vale 3. Il primo elemento è sempre il nome dello script.
Come eseguo una riga di PHP senza un file?
Usa php -r e ometti il tag <?php: php -r 'echo strtoupper("hi"), PHP_EOL;'. Per più righe, php -a apre una shell interattiva.
Come capisco se PHP gira da riga di comando o su un web server?
Controlla PHP_SAPI (oppure php_sapi_name()). Vale "cli" in un terminale, "cli-server" sotto php -S, e qualcosa come "fpm-fcgi" o "apache2handler" dietro un web server.