Dove posso trovare php.ini?


881

Alcuni anni fa ho installato Apache 2.2x e PHP 5.3.1 su un server Linux che mantengo. Ho usato .tar.gz's e li ho costruiti secondo le istruzioni (invece di rpms e what-have-you). E tutto andava bene.

Oggi ho bisogno di installare questo che sembra una libreria PHP. Ho eseguito tutti i passaggi per eseguire l'installazione e trovo ibm_db2.so in$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so

Il bello è che l'ultimo passaggio è configurare php.ini ma NON c'è php.ini sul mio sistema. Orrore degli orrori. PHP funziona benissimo, tranne ovviamente per questo nuovissimo ibm_db2 thingamagic che voglio usare in modo che qualcuno possa usare una GUI per armeggiare DB2. (Ho provato un piccolo script php che fallisce e indica che le funzioni ibm_db2 non sono disponibili).

Ho a che fare con PHP una volta ogni pochi anni, quindi per favore mi illumini ad un livello molto basilare su cosa potrei fare per abilitare l'accesso alla GUI basato sul web DB2.


120
Il 90% delle volte è /etc/php5/apache2/php.ini
Adam


6
Downvoting perché la premessa della domanda è sbagliata. "NON c'è php.ini sul mio sistema" No, non sei riuscito a trovarlo. A proposito, locate php.initi dirò in pochi momenti dove si trova il file sul tuo sistema.
Razze di leggerezza in orbita

1
@Adam: a meno che non sia PHP5;)
Linea

2
@line sì, il mio commento non è più troppo pertinente, anche se non ho realizzato la quantità di voti!
Adam,

Risposte:


466

Il modo migliore per trovarlo è: crea un file php e aggiungi il seguente codice:

<?php phpinfo(); ?>

e aprilo nel browser, mostrerà il file che viene effettivamente letto!

Aggiornamenti per OP:

  1. È probabile che la risposta precedentemente accettata sia più veloce e più conveniente per te, ma non è sempre corretta. Vedi i commenti su quella risposta.
  2. Nota anche l'alternativa più conveniente <?php echo php_ini_loaded_file(); ?>menzionata in questa risposta .

11
Questa dovrebbe essere la risposta accettata. Se hai installato la CLI e apache è in esecuzione, potrebbe avere il suo file ini (come fa il mio sistema). L'uso della risposta accettata restituisce ciò che la CLI sta usando anziché quella di apache.
Dan,

2
@Dan Sì, hai ragione. Sto cambiando la risposta accettata a questa perché il problema che menzioni è stato riscontrato anche da qualcuno in pratica (che ha commentato la risposta precedentemente accettata). (A proposito, se avessi commentato la domanda avrei risolto il problema prima.)
Negromante

2
Questo non funziona sulla mia installazione. Errore di battitura? Dovrebbe essere<?php phpinfo(); ?>
svenyonson il

9
php -r \@phpinfo\(\)\;funziona per me php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1per ottenere informazioni specifiche
jgraup

@zylstra Prova:<?php echo php_ini_loaded_file(); ?>
Ates Goral il

834

Sulla riga di comando eseguire:

php --ini

Otterrai qualcosa di simile a:

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_sqlite.ini,
/etc/php5/cli/conf.d/sqlite.ini,
/etc/php5/cli/conf.d/sqlite3.ini,
/etc/php5/cli/conf.d/xdebug.ini,
/etc/php5/cli/conf.d/xsl.ini

Viene dalla mia macchina di sviluppo locale. Tuttavia, la seconda riga è quella interessante. Se non viene menzionato nulla, dai un'occhiata al primo. Questo è il percorso in cui PHP cerca php.ini.

Puoi grep le stesse informazioni usando phpinfo()in uno script e chiamarle con un browser. È menzionato nel primo blocco dell'output. php -ifa lo stesso per la riga di comando, ma è abbastanza scomodo.


5
accettare la risposta più vecchia e in precedenza la più semplice (SO mi costringe ad aspettare un po 'prima di accettare). grazie per l'espansione che probabilmente aiuterà la prossima persona a cercare informazioni. per me la seconda riga diceva (nessuna), e tutto ha funzionato bene dopo aver inserito un file php.ini nel percorso sulla prima riga. Grazie!
Negromante

12
Ho usato questo comando e ho modificato il file php.ini che anch'esso mi indicava e le mie impostazioni PHP non stavano cambiando e mi sono reso conto che non mi stava fornendo il file php.ini corretto. Ho provato a utilizzare la funzione phpfo phpfo () e mi ha dato l'effettiva posizione corretta del php.ini che avevo bisogno di modificare. Penso che questo sia molto importante e spero che questo aiuti qualcuno.
thon thethreadthread

3
/etc/php5/apache2/php.ini
Adam,

@thecommonthread Grazie per aver segnalato il problema riscontrato in pratica. Ho modificato la risposta accettata a quella che evidenzia la creazione di un .phpfile. A proposito, se commenti sulla domanda, ricevo una notifica e posso risolvere il problema prima.
Negromante,

5
@Pacerier Questo non ha nulla a che fare con diverse installazioni PHP, ma i diversi SAPI possono usare file ini diversi. Non uso il modulo apache, ma per quanto mi ricordo penso che non ci sia modo di aggirare un phpinfo.phpfile simile. Con FPM puoi almeno usare php5-fpm -i | grep '\.ini'. Di solito lo usi due o tre volte e alla fine della giornata sai dove sono i file;)
KingCrunch

133

Questo funziona per me:

php -i | grep 'php.ini'

Dovresti vedere qualcosa del tipo:

Loaded Configuration File => /usr/local/lib/php.ini

ps Per ottenere solo il percorso php.inin

php -i | grep /.+/php.ini -oE

5
Questo funziona solo se v'è un php.ini, che è esattamente il problema: se non c'è nessuno, ancora non si sa dove guardare, o dove posizionare una nuova.
KingCrunch

Non ho mai incontrato una situazione in cui non esiste un file php.ini.
coderama,

Eseguire questo comando mi dà Configuration File (php.ini) Path => /usr/lib, ma correre <?php phpinfo(); ?>mi dà Loaded Configuration File: /etc/php.ini. Quindi, è phpinfo()stato più affidabile nel mio caso.
Leo Galleguillos,

2
Questo non è del tutto corretto. Ogni framework che utilizza il linguaggio PHP ha il proprio file php.ini. Se chiami quella linea dalla riga di comando, probabilmente finirai per ricevere qualcosa come /var/php5/cli/php.ini che non è il file usato durante l'esecuzione di PHP in un ambiente web. Per quel file, dovresti guardare nella cartella apache2.
Andrea Moro,

63

Nella finestra di comando digitare

php --ini

Ti mostrerà il percorso in qualche modo

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         /usr/local/lib/php.ini

Se il comando sopra non funziona, utilizzare questo

echo phpinfo();

33

Questo comando dovrebbe aiutarti a trovarlo

php -r "phpinfo();" | grep php.ini

1
Mi piace molto più di alcune delle altre risposte. Non richiede che io crei, localizzi un file php con quei contenuti e carichi la pagina nel browser.
Andrew Allbright,

29

Utilizzare i seguenti comandi per trovare il php.inipercorso del file in Linux.

[root@AnyDirectory ~]# locate php.ini
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.4.45/php.ini-development
/usr/share/doc/php-common-5.4.45/php.ini-production


o prova questo in un altro modo

[root@AnyDirectory ~]# php --ini
mostra il risultato del percorso


11
Questo è inferiore a metodi come php -i | grep 'php.ini', perché trova qualsiasi php.ini e non ti dice che uno vostri usi installazione di PHP. Inoltre, potrebbe dare risultati errati quando il locateDB non è aggiornato.
lxg,


22

PHP viene fornito con due funzioni native per mostrare quale file di configurazione è caricato:

A seconda della configurazione, Apache e CLI potrebbero utilizzare file INI diversi. Ecco le due soluzioni:

Apache:

Basta aggiungere quanto segue in un file php e aprirlo nel browser

print php_ini_loaded_file();
print_r(php_ini_scanned_files());

CLI:

Copia e incolla nel tuo terminale:

php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'

Risposta sottovalutata, approfondita e (quasi) corretta. Ho quasi commutato la risposta corretta ma sono preoccupato che php_ini_loaded_filepotrebbe non essere sempre disponibile.
Negromante

@zylstra qual era la tua versione php? i documenti per php_ini_loaded_filedire versione php> = 5.2.4
negromante

@necromancer Non sono sicuro ora. Ho dimenticato quale sistema stavo controllando. : /
zylstra,

8
find / -name php.ini

Ehi ... ha funzionato per me!


3
per uno, ci vuole un po '; per due, se ne hai più di uno, come fai a sapere qual è quello attualmente in uso?
Negromante il

1
È vero, php --inifunziona, ma questa è solo un'altra opzione :) Di solito c'è una /etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.inie di solito quella che vuoi è abbastanza ovvia. (cli, apache, cgi)
Banned_User

Questa non è una buona soluzione, perché non intendiamo trovare tutto il file php.ini sul disco.

4

Puoi ottenere maggiori informazioni sui tuoi file di configurazione usando qualcosa come:

$ -> php -i | ack config # Use fgrep -i if you don't have ack

Configure Command =>  './configure'  ...
Loaded Configuration File => /path/to/php.ini


2

Prova una di queste soluzioni

  1. Nel tuo tipo di terminale find / -name "php.ini"

  2. Nel tuo tipo di terminale php -i | grep php.ini. Dovrebbe mostrare il percorso del file comeConfiguration File (php.ini) Path => /etc

  3. Se riesci ad accedere a uno dei tuoi file php, aprilo in un editor (blocco note) e inserisci il codice seguente dopo <?php in una nuova riga phpinfo();Questo ti dirà la posizione php.ini
  4. Puoi anche parlare con php in modalità interattiva. Basta digitare php -ail terminale e digitare phpinfo (); dopo php avviato.

i punti 1, 2 e 4 sono vulnerabili a molteplici problemi di installazione; ci sono già ottime risposte. non è necessario aggiungere una risposta che non aggiunga nulla qui.
Negromante,

@necromancer spiega i tuoi problemi in dettaglio, quindi sarebbe utile per qualcuno. Abbiamo voti positivi e negativi per le risposte sbagliate e inutili e la comunità deciderà.
Cherankrish,

-1

Esistono diversi modi validi già menzionati per individuare il file php.ini, ma se ti sei imbattuto in questa pagina perché vuoi fare qualcosa con esso in uno script bash:

path_php_ini="$(php -i | grep 'Configuration File (php.ini) Path' | grep -oP '(?<=\=\>\s).*')" echo ${path_php_ini}


1
vedere questo invece: stackoverflow.com/a/24342463/621338 invece di grep fuori, che è fragile se le modifiche al testo, si potrebbe avere php stampa solo il nome del file e utilizzarlo in uno script bash, senza cose complicate come sopra.
Negromante
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.