web-dev-qa-db-ja.com

おい、私のphp.iniはどこにありますか?(サーバー設定)

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

今日はPHPライブラリのように見える this をインストールする必要があります。私はインストールを行うために上のすべてのステップを経て、私は$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.soの中にibm_db2.soを見つけます。

最後のステップはphp.iniの設定ですが、私のシステムにはphp.iniはありません。恐怖の恐怖。 PHPはもちろんうまくいきますが、私が使いたいと思うこの新しいもつれたibm_db2の事を除けば、誰かがDB2をいじるためにGUIを使うことができます。 (失敗してibm_db2関数が使用できないことを示す小さなphpスクリプトを試しました)。

私は数年に一度PHPに対処しなければならないので、DB2へのWebベースのGUIアクセスを可能にするために何ができるかについて非常に基本的なレベルで私を啓発してください。

806
necromancer

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

<?php phpinfo(); ?>

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

OPによる更新:

  1. 以前に受け入れられた answer はあなたにとってより速くそしてより便利であるように思われます、しかしそれは常に正しいというわけではありません。その答えについてのコメントを参照してください。
  2. この答えに で書かれているもっと便利な代替の<?php echo php_ini_loaded_file(); ?>にも注意してください。
420
Tejas

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

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

それは私の地元のdev-machineからです。しかし、2行目は興味深いものです。何も言及されていない場合は、最初のものを見てください。それがパスです。ここで、PHPはphp.iniを探します。

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

763
KingCrunch

これは私のために働く:

php -i | grep 'php.ini'

次のようなものが見えるはずです。

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

pS php.ininパスだけを取得する

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

コマンドウィンドウタイプ

php --ini

それはあなたにパスのようなものを見せるでしょう

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

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

echo phpinfo();
62
bibliophilsagar

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

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

以下のコマンドを使用して、Linuxのphp.iniファイルパスを見つけます。

[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
パスの結果が表示されます

29
Sakthi Karthik
phpinfo();

その場所、またはコマンドラインから教えてくれます

php -i
25
user557846

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

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

アパッチ:

以下を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());'
21
Creaforge
find / -name php.ini

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

6
Banned_User

以下のようなものを使って、あなたの設定ファイルに関するより多くの情報を得ることができます。

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

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

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/

この解決方法を試してください

  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
cherankrish