parse_ini_file

(PHP 4, PHP 5, PHP 7, PHP 8)

parse_ini_fileLegge un file di configurazione

Descrizione

parse_ini_file(string $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.

Elenco dei parametri

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.

Valori restituiti

Le impostazioni vengono restituite come un array associativo in caso di successo e false in caso di fallimento.

Esempi

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

Note

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 valori null, off, no e false producono "", e i valori on, yes e true 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.

Vedere anche: