(PHP 4, PHP 5, PHP 7, PHP 8)
parse_ini_file — Legge un file di configurazione
$filename
, bool $process_sections
= false
, int $scanner_mode
= INI_SCANNER_NORMAL): array
parse_ini_file() carica il
file ini specificato da filename
,
e restituisce le impostazioni in esso in un array associativo.
La struttura del file ini è la stessa del php.ini.
filename
Il nome del file ini da processare. Se viene utilizzato un percorso relativo, viene valutato rispetto alla directory di lavoro corrente, quindi l' include_path.
process_sections
Impostando il parametro process_sections
a true
, si ottiene un array multi-dimensionale con
i nomi delle sezioni e le impostazioni incluse. Per default
process_sections
è impostato a false
scanner_mode
Può essere INI_SCANNER_NORMAL
(default) o
INI_SCANNER_RAW
. Se viene fornito
INI_SCANNER_RAW
, i valori delle opzioni non verranno analizzati.
As of PHP 5.6.1 can also be specified as INI_SCANNER_TYPED
.
In this mode boolean, null and integer types are preserved when possible.
String values "true"
, "on"
and "yes"
are converted to true
. "false"
, "off"
, "no"
and "none"
are considered false
. "null"
is converted to null
in typed mode. Also, all numeric strings are converted to integer type if it is possible.
Le impostazioni vengono restituite come un array associativo in caso di successo
e false
in caso di fallimento.
Example #1 Contenuto di sample.ini
; Questo è un esempio di file di configurazione ; I commenti cominciano con ';', come in php.ini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = "/usr/local/bin" URL = "http://www.example.com/~username" [third_section] phpversion[] = "5.0" phpversion[] = "5.1" phpversion[] = "5.2" phpversion[] = "5.3" urls[svn] = "http://svn.php.net" urls[git] = "http://git.php.net"
Example #2 Esempio di parse_ini_file()
Le costanti (ma non le "costanti magiche" come __FILE__
)
possono anche essere lette
in un file ini, quindi se si definisce una costante come un valore di file ini prima di
eseguire parse_ini_file(), essa verrà integrata nei
risultati. Vengono valutati solo i valori ini e il valore deve essere solo la costante. Per esempio:
<?php
define('BIRD', 'Dodo bird');
// Lettura senza sezioni
$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);
// Lettura con sezioni
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
?>
Il precedente esempio visualizzerà qualcosa simile a:
Array ( [one] => 1 [five] => 5 [animal] => Dodo bird [path] => /usr/local/bin [URL] => http://www.example.com/~username [phpversion] => Array ( [0] => 5.0 [1] => 5.1 [2] => 5.2 [3] => 5.3 ) [urls] => Array ( [svn] => http://svn.php.net [git] => http://git.php.net ) ) Array ( [first_section] => Array ( [one] => 1 [five] => 5 [animal] => Dodo bird ) [second_section] => Array ( [path] => /usr/local/bin [URL] => http://www.example.com/~username ) [third_section] => Array ( [phpversion] => Array ( [0] => 5.0 [1] => 5.1 [2] => 5.2 [3] => 5.3 ) [urls] => Array ( [svn] => http://svn.php.net [git] => http://git.php.net ) ) )
Example #3 Leggere un file php.ini con parse_ini_file()
<?php
// Una semplice funzione utilizzata per confrontare i risultati di seguito
function yesno($expression)
{
return($expression ? 'Yes' : 'No');
}
// Ottieni il percorso per php.ini usando la funzione
// php_ini_loaded_file() disponibile da PHP 5.2.4
$ini_path = php_ini_loaded_file();
// Legge il file php.ini
$ini = parse_ini_file($ini_path);
// Stampa e confronta i valori, nota che l'uso di get_cfg_var()
// darà gli stessi risultati per la lettura ed il caricamento qui
echo '(parsed) magic_quotes_gpc = ' . yesno($ini['magic_quotes_gpc']) . PHP_EOL;
echo '(loaded) magic_quotes_gpc = ' . yesno(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
?>
Il precedente esempio visualizzerà qualcosa simile a:
(parsed) magic_quotes_gpc = Yes (loaded) magic_quotes_gpc = Yes
Example #4 interpolazione di valori
Oltre a valutare le costanti, alcuni caratteri hanno un significato speciale in un valore ini.
Inoltre, le variabili di ambiente e i valori definiti in precedenza possono essere letti utilizzando
la sintassi ${}
.
; | viene utilizzato per l'OR bit a bit three = 2|3 ; & viene utilizzato per l'AND bit a bit four = 6&5 ; ^ viene utilizzato per lo XOR bit a bit five = 3^6 ; ~ viene utilizzato per la negazione bit a bit negative_two = ~1 ; () viene utilizzato per il raggruppamento seven = (8|7)&(6|5) ; \ viene utilizzato per effettuare l'escape di un valore. newline_is = "\\n" ; Restituisce la stringa "\n", non un carattere di nuova riga. with quotes = "She said \"Exactly my point\"." ; Restituisce una stringa con virgolette. path = ${PATH} also_five = ${five}
Il precedente esempio visualizzerà qualcosa simile a:
(parsed) magic_quotes_gpc = Yes (loaded) magic_quotes_gpc = Yes
Nota:
Questa funzione non è collegata con il file php.ini. Esso è già elaborato al momento in cui gira lo script. Questa funzione può essere utilizzata per leggere i file di configurazione propri dell'applicazione.
Nota:
Se un valore nel file ini contiene caratteri non alfanumerici, esso deve essere delimitato dai doppi apici (").
Nota: Ci sono parole riservate che non devono essere usate come chiavi per i file ini. Queste includono:
null
,yes
,no
,true
,false
,on
,off
,none
. I valorinull
,off
,no
efalse
producono""
, e i valorion
,yes
etrue
producono"1"
, salvo che non venga usata la modalitàINI_SCANNER_TYPED
(a partire da PHP 5.6.1). I caratteri?{}|&~!()^"
non devono essere utilizzati da nessuna parte nella chiave e hanno un significato speciale nel valore.
Nota:
Le voci senza segno di uguale vengono ignorate. Ad esempio, "foo" viene ignorato mentre "bar =" viene caricato e aggiunto con un valore vuoto. Ad esempio, MySQL ha un'impostazione "no-auto-rehash" nel file my.cnf che non accetta un valore, quindi viene ignorato.
Nota:
I file ini sono generalmente trattati come testo normale dai server web e quindi forniti ai browser se richiesto. Ciò significa che per sicurezza bisogna mantenere i propri file ini fuori dalla propria docroot o riconfigurare il proprio server web per non servirli. La mancata esecuzione di uno di questi può introdurre un rischio per la sicurezza.