php.iniはどこにありますか?


881

数年前、私が維持しているLinuxサーバーにApache 2.2xとPHP 5.3.1をインストールしました。私は.tar.gzを使用し、(rpmやwhat-have-youの代わりに)指示どおりにビルドしました。そして、すべて大丈夫だった。

今日、私はこれをPHPライブラリのようにインストールする必要があります。インストールするまでのすべての手順を実行しましたが、ibm_db2.soに$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so

すばらしい点は、最後のステップはphp.iniの構成ですが、私のシステムにはphp.iniがありません。恐怖の恐怖。PHPは正常に動作しますが、もちろん、誰かがGUIを使用してをいじくれるようにしたいので、使いたいibm_db2thingamagicを使いますDB2。(私は失敗し、ibm_db2関数が利用できないことを示す小さなphpスクリプトを試しました)。

私は数年に一度PHPを扱う必要があるので、WebベースのGUIからへのアクセスを可能にするために何ができるかについて、非常に基本的なレベルで教えてくださいDB2


120
時間の90%は/etc/php5/apache2/php.iniです
Adam


6
質問の前提が間違っているため、反対投票。「私のシステムにphp.iniはありませんいいえ、単にそれを見つけることができませんでした。そういえばlocate php.ini、ファイルがシステムのどこにあるかがすぐにわかります。
オービットのライトネスレース

1
@Adam:PHP5でない限り;)
Line

2
@lineええ、私のコメントはあまり重要ではありませんが、賛成票の数はわかりませんでした!
アダム

回答:


466

これを見つける最良の方法は、phpファイルを作成して次のコードを追加することです。

<?php phpinfo(); ?>

そしてそれをブラウザで開くと、実際に読み込まれているファイルが表示されます!

OPによる更新:

  1. 以前に受け入れられた答え方が速くて便利ですが、常に正しいとは限りません。その回答についてのコメントを参照してください。
  2. この回答で<?php echo php_ini_loaded_file(); ?>言及されているより便利な代替案にも注意してください。

11
これは受け入れられる答えになるはずです。CLIがインストールされていて、Apacheが実行されている場合は、独自のiniファイルが含まれている可能性があります(私のシステムと同様)。受け入れられた回答を使用すると、ApacheではなくCLIが使用しているものが返されます。
ダン

2
@ダンはい、そうです。あなたが言及する問題は実際に誰か(以前に受け入れられた回答にコメントした)にも遭遇したため、私はこれを受け入れられた回答に変更します。(ちなみに、あなたが質問にコメントしたならば、私はこの問題をもっと早く修正したでしょう。)
ネクロマンサー

2
これは私のインストールでは機能しません。打ち間違え?あるべき<?php phpinfo(); ?>
svenyonson

9
php -r \@phpinfo\(\)\;php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1特定の情報を
取得

試してみてください@zylstra:<?php echo php_ini_loaded_file(); ?>
ATES Goral

834

コマンドラインで次を実行します:

php --ini

次のようなものが得られます:

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

それは私のローカル開発マシンからです。ただし、2行目は興味深いものです。何も言及されていない場合は、最初のものを見てください。これは、PHPがを探すパスphp.iniです。

phpinfo()スクリプトで同じ情報をgrep して、ブラウザーで呼び出すことができます。出力の最初のブロックで言及されています。php -iコマンドラインでも同じことを行いますが、非常に不快です。


5
最も古く、以前は最も単純な答えを受け入れます(SOは受け入れる前にしばらく待つことを強制します)。おそらく情報を探している次の人を助ける拡張に感謝します。私にとって2行目は(なし)と言っていました、そして最初の行のパスにphp.iniファイルを置いた後すべてがうまくいきました。ありがとう!
ネクロマンサー2011

12
私はこのコマンドを使用してphp.iniファイルを編集しましたが、これも私に指示しました。私のPHP設定は変更されておらず、正しいphp.iniファイルを提供していないことに気付きました。私はphpinfo()PHP関数を使用してみましたが、編集する必要があるphp.iniの実際の正しい場所がわかります。これは非常に重要だと思います。これが誰かの役に立てば幸いです。
thecommonthread 2014年

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

@thecommonthread実際に発生した問題を指摘していただきありがとうございます。受け入れられた回答を、.phpファイルの作成を強調するものに変更しました。ちなみに、あなたが質問にコメントすると、私に通知が届き、問題をより早く修正できます。
ネクロマンサー

5
@Pacerierこれは、異なるPHPインストールとは関係ありませんが、異なるSAPIは異なるiniファイルを使用できます。私はapacheモジュールを使用していませんが、私が覚えている限り、のphpinfo.phpようなファイルを回避する方法はないと思います。FPMを使用すると、少なくともを使用できますphp5-fpm -i | grep '\.ini'。通常、これを2〜3回使用し、1日の終わりにファイルの場所がわかります;)
KingCrunch

133

これは私にとってはうまくいきます:

php -i | grep 'php.ini'

次のように表示されます。

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

ps php.ininパスのみを取得するには

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

5
これが機能するのは、が存在する場合のみありphp.ini、これがまさに問題です。存在しない場合でも、どこを見ればよいのか、どこに新しい場所を配置するのかわかりません。
KingCrunch 2013

php.iniファイルがない状況に遭遇したことはありません。
coderama 2013

このコマンドを実行すると私Configuration File (php.ini) Path => /usr/libに与えられますが、実行<?php phpinfo(); ?>すると私に与えられますLoaded Configuration File: /etc/php.ini。だから、phpinfo()私の場合はより信頼性が高かった。
Leo Galleguillos 14年

2
これは完全に正しいわけではありません。PHP言語を使用するすべてのフレームワークには、独自のphp.iniファイルがあります。コマンドラインからその行を呼び出すと、Web環境でPHPを実行するときに使用されるファイルではない/var/php5/cli/php.iniのようなものを受け取ることになります。そのファイルについては、apache2フォルダーを調べる必要があります。
Andrea Moro

63

コマンドウィンドウで

php --ini

次のようなパスが表示されます

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

上記のコマンドが機能しない場合は、これを使用してください

echo phpinfo();

33

このコマンドは、それを見つけるのに役立ちます

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

1
私は他のいくつかの答えよりもこれがとても好きです。私は、それらのコンテンツを含むphpファイルを作成して検索し、ブラウザーにページをロードする必要はありません。
Andrew Allbright 2017年

29

php.iniLinuxでファイルパスを検索するには、次のコマンドを使用します。

[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


またはこれを別の方法で試してください

[root@AnyDirectory ~]# php --ini
そのパスの結果を示しています


11
これは php.iniをphp -i | grep 'php.ini'検出し、PHPインストールが使用しているものを通知しないため、などのメソッドよりも劣ります。また、DBが最新でない場合、誤った結果が生じる可能性があります。locate
lxg 2016


22

PHPには、どの設定ファイルがロードされているかを示す2つのネイティブ関数が付属しています。

設定によっては、ApacheCLIが異なるiniファイルを使用する場合があります。ここに2つの解決策があります:

Apache:

以下をphpファイルに追加して、ブラウザで開いてください

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

CLI:

端末にコピーして貼り付けます:

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

十分に評価されておらず、徹底的で(ほぼ)正解。私はこれを正解に切り替えましたが、php_ini_loaded_file常に利用できるとは限らないのではないかと心配しています。
ネクロマンサー2017年

@zylstra phpのバージョンは何でしたか?php_ini_loaded_filesay php のドキュメントのバージョン> = 5.2.4
ネクロマンサー

@necromancerよくわかりません。チェックしていたシステムを忘れました。:/
zylstra 2017年

8
find / -name php.ini

ねえ...それは私のために働いた!


3
一つには、それはしばらくかかります。2人の場合、2人以上いる場合、どれが実際に使用されているかをどのようにして知るのですか?
ネクロマンサー2014

1
確かにphp --ini動作しますが、これは別のオプションにすぎません:)通常、/etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.ini必要なものはありますが、それはかなり明白です。(cli、apache、cgi)
Banned_User

ディスク上のすべてのphp.iniファイルを見つけることを目的としていないため、これは良い解決策ではありません。

4

次のようなものを使用して、設定ファイルに関する詳細情報を取得できます。

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

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

4

SAPIの場合:php-fpm

php.infoファイルを作成する必要はありません(とにかくそれを世界中に公開することはお勧めしません)。コマンドラインで:

php-fpm -i | more

出力のどこかに、次の行が表示されます。

Configuration File (php.ini) Path => /etc

これはより完全な説明です:https : //www.cloudinsidr.com/content/how-to-figure-out-your-php-configuration-parameters-without-info-php/


2

この解決策の1つを試してください

  1. あなたの端末タイプ find / -name "php.ini"

  2. あなたの端末タイプで php -i | grep php.ini。ファイルパスは次のように表示されますConfiguration File (php.ini) Path => /etc

  3. phpファイルにアクセスできる場合は、それをエディター(メモ帳)で開き<?php 、新しい行の後にコードの下に挿入します。phpinfo();これにより、php.iniの場所がわかります
  4. インタラクティブモードでphpと対話することもできます。php -aターミナルに入力してphpinfo();と入力するだけです。PHPが開始された後。

ポイント1、2、および4は、複数のインストールの問題に対して脆弱です。すでに素晴らしい答えがあります。ここに何も追加しない回答を追加する必要はありません。
ネクロマンサー

@necromancerは問題を詳細に説明するので、誰かに役立つでしょう。悪い回答や役に立たない回答には賛成と反対の投票があり、コミュニティが決定します。
cherankrish

-1

php.iniファイルを見つけるための有効な方法はすでにいくつかありますが、bashスクリプトで何かを実行したいためにこのページに出くわした場合:

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


1
代わりにこれを参照してください:stackoverflow.com/a/24342463/621338テキストを変更すると壊れやすいので、grepping outする代わりに、 / a / 24342463/621338を使用します。phpでファイル名だけを印刷し、上記のような複雑なことをせずにbashスクリプトで使用できます。
ネクロマンサー2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.