International PHP Conference Berlin 2025

Opzioni della linea di comando

L'elenco completo delle opzioni del PHP disponibili da linea di comando può essere visualizzato in qualsiasi momento eseguendo il PHP con l'opzione -h:

Usage: php [options] [-f] <file> [--] [args...]
   php [options] -r <code> [--] [args...]
   php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
   php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
   php [options] -- [args...]
   php [options] -a

  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse and execute <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -S <addr>:<port> Run with built-in web server.
  -t <docroot>     Specify document root <docroot> for built-in web server.
  -s               Output HTML syntax highlighted source.
  -v               Version number
  -w               Output source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

  --ini            Show configuration file names

  --rf <name>      Show information about function <name>.
  --rc <name>      Show information about class <name>.
  --re <name>      Show information about extension <name>.
  --rz <name>      Show information about Zend extension <name>.
  --ri <name>      Show configuration for extension <name>.

Opzioni della linea di comando,
Parametro Parametro lungo Descrizione
-a --interactive

Esegue il PHP in modo interattivo. Per maggiori informazioni, vedere la sezione Shell interattiva .

-b --bindpath

Percorso per collegamento esterno alla modalità Server FASTCGI (solo CGI).

-C --no-chdir

Non eseguire chdir nella cartella dello script (solo CGI).

-q --no-header

Modo silenzioso. Sopprime l'emissione delle intestazioni HTTP (solo CGI).

-T --timing

Misura il tempo di esecuzione dello script ripetutocount volte (solo CGI).

-c --php-ini

Con questa opzione si può sia specificare la directory in cui cercare il php.ini o si può specificare un file INI personalizzato (che non deve necessariamente chiamarsi php.ini), ad esempio:

$ php -c /custom/directory/ my_script.php

$ php -c /custom/directory/custom-file.ini my_script.php

Se non si specifica questa opzione, il file viene ricercato nelle directory di default.

-n --no-php-ini

Ignora del tutto il php.ini.

-d --define

Questa opzione permette di impostare valori personalizzati per qualsiasi delle direttive di configurazione previste in php.ini. La sintassi è:

 -d configuration_directive[=value]
 

Example #1 Example of using -d to set an INI setting

# Omettendo il valore si imposta la direttiva data a "1"
$ php -d max_execution_time
        -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"

# Passando un valore vuoto si imposta la direttiva a ""
php -d max_execution_time=
        -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""

# La direttiva di configurazione viene impostata a qualsiasi valore passato dopo il carattere '='
$  php -d max_execution_time=20
        -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(2) "20"
$  php
        -d max_execution_time=doesntmakesense
        -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(15) "doesntmakesense"

-e --profile-info

Genera informazioni estese per il debugger/profiler.

-f --file

Analizza ed esegue il file passato con l'opzione -f. Questo parametro è opzionale e può essere omesso. Basta fornire il nome del file da eseguire.

Nota:

Al fine di passare argomenti ad uno script, il primo argomento deve essere --, altrimenti PHP li interpreterà come opzioni del PHP.

-h e -? --help e --usage Con questa opzione si ha l'elenco dei comandi di linea ed una breve descrizione di questi.
-i --info Questa opzione della linea di comando richiama la funzione phpinfo(), e ne visualizza il risultato. Se il PHP non funziona correttamente, è opportuno utilizzare php -i per verificare se sono visualizzati messaggi di errore prima o al posto della tabella con le informazioni. Fare attenzione quando si usa la modalità CGI, l'output è in formato HTML e quindi abbastanza abbondante.
-l --syntax-check

Questa opzione fornisce un metodo pratico per eseguire un controllo sintattico di un dato codice PHP. Se il controllo ha successo, verrà visualizzato il testo No syntax errors detected in <filename> e alla shell sarà restituito il codice 0. Se si rilevano errori si avrà il testo Errors parsing <filename>, inoltre si avranno anche i messaggi di errore del parser ed alla shell sarà restituito il codice -1.

Questa opzione non rileva errori fatali (tipo funzioni non definite). Occorre utilizzare l'opzione -f se si desidera rilevare gli errori fatali.

Nota:

Questa opzione non è abbinabile all'opzione -r.

-m --modules

Example #2 Visualizzazione dei moduli PHP e di Zend integrati (e quindi caricati):

$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

-r --run

Questa opzione permette l'esecuzione di codice PHP direttamente da linea di comando. I tag PHP di apertura e di chiusura (<?php e ?>) non sono necessari anzi, se presenti, causano un errore del parser.

Nota:

Quando si utilizza questo metodo occorre prestare attenzione ad evitare collisioni con la sostituzione delle varibili eseguita dalla shell sulla linea di comando.

Example #3 errore di sintassi con l'utilizzo dei doppi apici

$ php -r "$foo = get_defined_constants();"
PHP Parse error:  syntax error, unexpected '=' in Command line code on line 1

Parse error: syntax error, unexpected '=' in Command line code on line 1

In questo caso il problema è dovuto alla sostituzione della variabile eseguita da sh/bash anche quando si usano i doppi apici ". Poiché la variabile $foo non è definita, essa verrà espansa con 'niente' generando il seguente codice PHP:

$ php -r " = get_defined_constants();"

Il metodo corretto richiede l'uso dell'apice singolo '. Le variabili racchiuse in stringhe delimite dall'apice singolo non vengono espanse da sh/bash.

Example #4 Utilizzo degli apici singoli per impedire la sostituzione delle variabili nella shell

$ php -r '$foo = get_defined_constants(); var_dump($foo);'
array(370) {
  ["E_ERROR"]=>
  int(1)
  ["E_WARNING"]=>
  int(2)
  ["E_PARSE"]=>
  int(4)
  ["E_NOTICE"]=>
  int(8)
  ["E_CORE_ERROR"]=>
  [...]

Se si utilizzano shell differenti rispetto a sh/bash, si potrebbe incorrere in altri problemi. In tal caso aprite una segnalazione di errore a » https://github.com/php/php-src/issues. Si può facilmente incorrere in problemi utilizzando variabili (shell o PHP) nel codice command-line, o utilizzando le barre rovesciate (backslash) per l'escape, quindi occorre essere molto prudenti. Siete avvertiti.

Nota:

L'opzione -r è disponibile nella CLI SAPI ma non nella CGI SAPI.

Nota:

Questa opzione è prevista solo per codice molto semplice, quindi alcune direttive di configurazione (come auto_prepend_file e auto_append_file) sono ignorate in questa modalità.

-B --process-begin

Codice PHP da eseguire prima di processare stdin.

-R --process-code

Esegue il codice PHP per ogni linea di input.

In questa modalità si hanno due variabili speciali: $argn ed $argi. $argn contiene la linea PHP in elaborazione al momento, mentre $argi contiene il numero di linea.

-F --process-file

Esegue il file PHP per ogni linea di input.

-E --process-end

Codice PHP da eseguirsi dopo il processamento dell'input.

Example #5 Utilizzo delle opzioni -B, -R e -E per contare il numero di linea di un progetto.

$ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Total Lines: $l\n";'
Total Lines: 37328

-S --server

Avvia il web server interno.

-t --docroot Specifica la document root per il web server interno.
-s --syntax-highlight e --syntax-highlighting

Visualizza il sorgente con sintassi colorata.

Questa opzione utilizza il meccanismo interno di parsing dei file e produce una versione HTML evidenziata del sorgente dirigendola verso lo standard output. Occorre notare che questa funzione genera dei blocchi di tag HTML <code> [...] </code> e non le intestazioni HTML.

Nota:

Questa opzione non funziona abbinata all'opzione -r.

-v --version

Example #6 Utilizzo di -v per recuperare il nome SAPI e la versione di PHP e Zend

$ php -v
PHP 5.3.1 (cli) (built: Dec 11 2009 19:55:07)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

-w --strip

Visualizza il sorgente senza gli spazi e i commenti.

Nota:

Questa opzione non funziona abbinata all'opzione -r.

-z --zend-extension

Carica l'estensione Zend. Soltano se si fornisce un nome di file, il PHP tenta di caricare l'estensione dal corrente percorso di default delle librerie (solitamente, sui sistemi Linux, /etc/ld.so.conf). Se si fornisce un nome di file con percorso assoluto, ls libreria non sarà cercata nella directory di default. Un nome di file con percorso relativo indica al PHP di tentare di caricare l'estensione con percorso relativo alla directory corrente.

  --ini

Visualizza i nomi dei file di configurazione e le cartelle scansionate.

Example #7 Esempio di uso di --ini

$ php --ini
Configuration File (php.ini) Path: /usr/dev/php/5.2/lib
Loaded Configuration File:         /usr/dev/php/5.2/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

--rf --rfunction

Visualizza le informazioni della funzione o metodo di classe indicato (es. numero e nome dei parametri).

Questa opzione è disponibile solo se PH è stato compilato con il supporto alla Reflection.

Example #8 semplice utilizzo di --rf

$ php --rf var_dump
Function [ <internal> public function var_dump ] {

  - Parameters [2] {
    Parameter #0 [ <required> $var ]
    Parameter #1 [ <optional> $... ]
  }
}

--rc --rclass

Visualizza le informazioni della classe indicata (lista delle costanti, proprietà e metodi).

Questa opzione è disponibile solo se PH è stato compilato con il supporto alla Reflection.

Example #9 Esempio di --rc

$ php --rc Directory
Class [ <internal:standard> class Directory ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [0] {
  }

  - Methods [3] {
    Method [ <internal> public method close ] {
    }

    Method [ <internal> public method rewind ] {
    }

    Method [ <internal> public method read ] {
    }
  }
}

--re --rextension

Visualizza le informazioni dell'estensione indicata (elenco delle opzioni php.ini, funzioni, costanti and classi definite).

Questa opzione è disponibile solo se PH è stato compilato con il supporto alla Reflection.

Example #10 Esempio di --re

$ php --re json
Extension [ <persistent> extension #19 json version 1.2.1 ] {

  - Functions {
    Function [ <internal> function json_encode ] {
    }
    Function [ <internal> function json_decode ] {
    }
  }
}

--rz --rzendextension

Visualizza le informazioni di configurazione per l'estensione Zend indicata (le stesse informazioni che sono fornite da phpinfo()).

--ri --rextinfo

Visualizza le informazioni di configurazione per l'estensione indicata (le stesse informazioni che sono fornite da phpinfo()). Le informazioni di configurazione del sistema di base sono disponibili usando "main" come nome d'estensione.

Example #11 --ri example

$ php --ri date

date

date/time support => enabled
"Olson" Timezone Database Version => 2009.20
Timezone Database => internal
Default timezone => Europe/Oslo

Directive => Local Value => Master Value
date.timezone => Europe/Oslo => Europe/Oslo
date.default_latitude => 59.930972 => 59.930972
date.default_longitude => 10.776699 => 10.776699
date.sunset_zenith => 90.583333 => 90.583333
date.sunrise_zenith => 90.583333 => 90.583333

Nota:

Le options -rBRFEH, --ini e --r[fcezi] sono disponibili solo in modalità CLI.

add a note

User Contributed Notes 2 notes

up
1
dch
1 year ago
If you would like to see the PHP's current configuration using the -i switch from the shell command line with php.ini specified, then the order of arguments is important. Putting -i after -c gives the intended result.

Info is printed out for the default php.ini (cli)
$ php -i --php-ini /etc/php/7.4/fpm/php.ini | grep -i "loaded conf"
Loaded Configuration File => /etc/php/7.4/cli/php.ini

Info is printed out for the desired php.ini (fpm)
$ php --php-ini /etc/php/7.4/fpm/php.ini -i | grep -i "loaded conf"
Loaded Configuration File => /etc/php/7.4/fpm/php.ini
up
-2
Ap.Muthu
10 years ago
If we start the php's built in webserver (PHP v5.4 onwards) with:
php -S localhost:8000 -t htdocs
and have an image file picture.jpg in it
and reference it in a html page with:
<img src="picture.jpg">
the rendered page will not show the image and the html code behind the image is:
http://localhost:8000/index.php/picture.jpg

If however, the html code in the page is:
<img src="/picture.jpg">
the picture displays correctly.

Hence relative addressing is broken in PHP 5.4.33 Win32 VC9 build.
To Top