Di mana saya dapat menemukan php.ini?

881

Beberapa tahun yang lalu saya menginstal Apache 2.2x dan PHP 5.3.1 di server Linux yang saya pelihara. Saya menggunakan .tar.gz's dan membangunnya seperti yang diinstruksikan (bukan rpms dan what-have-you). Dan semuanya baik-baik saja.

Hari ini saya perlu menginstal ini yang tampak seperti perpustakaan PHP. Saya telah melalui semua langkah untuk menginstal, dan saya menemukan ibm_db2.so$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so

Tangkapan hebat adalah langkah terakhir adalah mengkonfigurasi php.ini tetapi tidak ada php.ini di sistem saya. Horor kengerian. PHP berfungsi dengan baik, kecuali tentu saja untuk halamagic ibm_db2 baru-ketinggalan jaman ini yang ingin saya gunakan sehingga seseorang dapat menggunakan GUI untuk mengotak-atik DB2. (Saya mencoba skrip php kecil yang gagal dan menunjukkan bahwa fungsi ibm_db2 tidak tersedia).

Saya harus berurusan dengan PHP sekali setiap beberapa tahun, jadi tolong beri tahu saya pada tingkat yang sangat mendasar tentang apa yang bisa saya lakukan untuk mengaktifkan akses GUI berbasis web DB2.

ahli nujum
sumber
120
90% dari waktu itu adalah /etc/php5/apache2/php.ini
Adam
6
Mengalami downvoting karena premis dari pertanyaan itu salah. "TIDAK ada php.ini di sistem saya" Tidak, Anda gagal menemukannya. Omong-omong, locate php.iniakan memberi tahu Anda hanya saat-saat di mana file ada di sistem Anda.
Lightness Races in Orbit
1
@ Adam: kecuali bukan PHP5;)
Baris
2
@ line ya komentar saya tidak terlalu relevan lagi, meskipun tidak menyadari jumlah upvotes!
Adam

Jawaban:

466

Cara terbaik untuk menemukannya adalah: buat file php dan tambahkan kode berikut:

<?php phpinfo(); ?>

dan buka di browser, itu akan menampilkan file yang sebenarnya sedang dibaca!

Pembaruan oleh OP:

  1. Jawaban yang diterima sebelumnya kemungkinan akan lebih cepat dan lebih nyaman bagi Anda, tetapi itu tidak selalu benar. Lihat komentar tentang jawaban itu.
  2. Harap perhatikan juga alternatif yang lebih nyaman yang <?php echo php_ini_loaded_file(); ?>disebutkan dalam jawaban ini .
Tejas
sumber
11
Ini harus menjadi jawaban yang diterima. Jika Anda telah menginstal CLI dan menjalankan apache maka mungkin file ini sendiri (seperti sistem saya). Menggunakan jawaban yang diterima mengembalikan apa yang CLI gunakan daripada apache.
Dan
2
@Dan Ya, Anda benar. Saya mengubah jawaban yang diterima untuk yang ini karena masalah yang Anda sebutkan juga ditemui seseorang dalam praktik (yang mengomentari jawaban yang sebelumnya diterima). (Ngomong-ngomong, jika Anda mengomentari pertanyaan saya akan memperbaiki masalah ini lebih cepat.)
necromancer
2
Ini tidak berfungsi pada instalasi saya. Salah ketik? Seharusnya<?php phpinfo(); ?>
svenyonson
9
php -r \@phpinfo\(\)\;berfungsi bagi saya php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1untuk menarik info spesifik
jgraup
@zylstra Coba:<?php echo php_ini_loaded_file(); ?>
Ates Goral
834

Di baris perintah jalankan:

php --ini

Anda akan mendapatkan sesuatu seperti:

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

Itu dari mesin dev lokal saya. Namun, baris kedua adalah yang menarik. Jika tidak ada yang disebutkan, lihat yang pertama. Itu adalah path, tempat PHP mencari php.ini.

Anda dapat menangkap informasi yang sama menggunakan phpinfo()skrip dan menyebutnya dengan browser. Disebutkan di blok pertama output. php -imelakukan hal yang sama untuk baris perintah, tetapi cukup tidak nyaman.

KingCrunch
sumber
5
menerima jawaban terlama dan sebelumnya yang paling sederhana (SO memaksa saya untuk menunggu beberapa saat sebelum menerima). terima kasih untuk perluasan yang mungkin akan membantu orang berikutnya mencari informasi. bagi saya baris ke-2 mengatakan (tidak ada), dan semuanya bekerja dengan baik setelah meletakkan file php.ini di jalur di baris pertama. Terima kasih!
ahli nujum
12
Saya menggunakan perintah ini dan mengedit file php.ini yang mengarahkan saya juga dan pengaturan PHP saya tidak berubah dan saya menyadari itu tidak memberi saya file php.ini yang benar. Saya mencoba menggunakan fungsi phpinfo () PHP dan itu memberi saya lokasi php.ini yang benar saya perlu edit. Saya pikir ini sangat penting dan saya harap ini membantu seseorang.
thecommonthread
3
/etc/php5/apache2/php.ini
Adam
@thecommonthread Terima kasih telah menunjukkan masalah yang Anda temui dalam latihan. Saya telah mengubah jawaban yang diterima menjadi yang menyoroti pembuatan .phpfile. Ngomong-ngomong, jika Anda mengomentari pertanyaan maka saya akan diberi tahu dan saya dapat memperbaiki masalahnya lebih cepat.
necromancer
5
@Pacerier Ini tidak ada hubungannya dengan instalasi PHP yang berbeda, tetapi SAPI yang berbeda dapat menggunakan file ini berbeda. Saya tidak menggunakan modul apache, tetapi sejauh yang saya ingat, saya pikir tidak ada jalan lain untuk phpinfo.phpfile yang mirip. Dengan FPM Anda setidaknya bisa menggunakan php5-fpm -i | grep '\.ini'. Biasanya Anda menggunakan ini dua atau tiga kali dan pada akhirnya Anda tahu di mana file-file itu berada;)
KingCrunch
133

Ini bekerja untuk saya:

php -i | grep 'php.ini'

Anda harus melihat sesuatu seperti:

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

ps Untuk mendapatkan hanya jalur php.inin

php -i | grep /.+/php.ini -oE
coderama
sumber
5
Ini hanya bekerja, jika ada adalah sebuah php.ini, yang persis masalah: Jika tidak ada, Anda masih tidak tahu di mana untuk melihat, atau di mana untuk menempatkan yang baru.
KingCrunch
Saya tidak pernah menemukan situasi di mana tidak ada file php.ini.
coderama
Menjalankan perintah ini memberi saya Configuration File (php.ini) Path => /usr/lib, tetapi berlari <?php phpinfo(); ?>memberi saya Loaded Configuration File: /etc/php.ini. Jadi, phpinfo()lebih andal dalam kasus saya.
Leo Galleguillos
2
Ini tidak sepenuhnya benar. Setiap kerangka kerja yang menggunakan bahasa PHP memiliki file php.ini sendiri. Jika Anda memanggil baris itu dari baris perintah, Anda mungkin akan menerima sesuatu seperti /var/php5/cli/php.ini yang bukan merupakan file yang digunakan saat menjalankan PHP di lingkungan web. Untuk file itu, Anda harus melihat ke folder apache2.
Andrea Moro
63

Pada jendela jenis perintah

php --ini

Ini akan menunjukkan Anda jalan seperti apa

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

Jika perintah di atas tidak berfungsi, gunakan ini

echo phpinfo();
bibliophilsagar
sumber
33

Perintah ini akan membantu Anda menemukannya

php -r "phpinfo();" | grep php.ini
Rimantas Jacikevicius
sumber
1
Saya suka ini lebih dari beberapa jawaban lainnya. Tidak mengharuskan saya membuat, mencari file php dengan konten tersebut dan memuat halaman di browser.
Andrew Allbright
29

Gunakan perintah berikut untuk menemukan php.inijalur file di 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


atau coba ini dengan cara lain

[root@AnyDirectory ~]# php --ini
ini menunjukkan hasil path

Sakthi Karthik
sumber
11
Ini lebih rendah daripada metode seperti php -i | grep 'php.ini', karena menemukan setiap php.ini dan tidak memberitahu Anda mana yang menggunakan instalasi PHP Anda. Juga, itu dapat memberikan hasil yang salah ketika locateDB tidak mutakhir.
lxg
26
phpinfo();

akan memberi tahu Anda lokasinya, atau dari baris perintah

php -i
Leniel Maccaferri
sumber
22

PHP dilengkapi dengan dua fungsi asli untuk menunjukkan file konfigurasi mana yang dimuat:

Bergantung pada pengaturan Anda, Apache dan CLI mungkin menggunakan file ini berbeda. Inilah dua solusi:

Apache:

Cukup tambahkan berikut ini di file php dan buka di browser Anda

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

CLI:

Salin-tempel di terminal Anda:

php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
Creaforge
sumber
Jawaban yang kurang dihargai, menyeluruh, dan (hampir) benar. Saya hampir mengalihkan ini ke jawaban yang benar tetapi saya khawatir php_ini_loaded_filetidak selalu tersedia.
necromancer
@zylstra apa versi php Anda? dokumen untuk php_ini_loaded_filemengatakan versi php> = 5.2.4
necromancer
@necromancer Tidak yakin sekarang. Lupa sistem yang saya periksa. : /
zylstra
8
find / -name php.ini

Hei ... itu berhasil untukku!

Banned_User
sumber
3
untuk satu, butuh beberapa saat; untuk dua, jika Anda memiliki lebih dari satu, bagaimana Anda tahu mana yang benar-benar digunakan?
necromancer
1
Benar, php --iniberfungsi, tetapi ini hanyalah pilihan lain :) Biasanya ada /etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.inidan biasanya yang Anda inginkan cukup jelas. (cli, apache, cgi)
Banned_User
Ini bukan solusi yang baik, karena kami tidak dimaksudkan untuk menemukan semua file php.ini pada disk.
4

Anda bisa mendapatkan lebih banyak info tentang file konfigurasi menggunakan sesuatu seperti:

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

Configure Command =>  './configure'  ...
Loaded Configuration File => /path/to/php.ini
Mike Purcell
sumber
2

Coba salah satu solusi ini

  1. Dalam tipe terminal Anda find / -name "php.ini"

  2. Dalam tipe terminal Anda php -i | grep php.ini. Itu harus menunjukkan path file sebagaiConfiguration File (php.ini) Path => /etc

  3. Jika Anda dapat mengakses satu file php Anda, buka di editor (notepad) dan masukkan kode di bawah ini setelah <?php di baris baru. phpinfo();Ini akan memberi tahu Anda lokasi php.ini
  4. Anda juga dapat berbicara dengan php dalam mode interaktif. Cukup ketik php -aterminal dan ketik phpinfo (); setelah php dimulai.
cherankrish
sumber
poin 1, 2, dan 4 rentan terhadap berbagai masalah instalasi; sudah ada jawaban bagus. tidak perlu menambahkan jawaban yang tidak menambahkan apa pun di sini.
ahli nujum
@necromancer menjelaskan masalah Anda secara detail sehingga akan bermanfaat bagi seseorang. Kami memiliki suara positif dan negatif untuk jawaban yang buruk dan tidak berguna dan komunitas akan memutuskan.
cherankrish
-1

Ada beberapa cara valid yang telah disebutkan untuk menemukan file php.ini, tetapi jika Anda menemukan halaman ini karena Anda ingin melakukan sesuatu dengannya dalam skrip bash:

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

Cragmonkey
sumber
1
lihat ini sebagai gantinya: stackoverflow.com/a/24342463/621338 alih-alih mencabutnya, yang rapuh jika teksnya berubah, Anda bisa meminta php mencetak hanya nama file dan menggunakannya dalam skrip bash tanpa hal-hal rumit seperti di atas.
ahli nujum