web-dev-qa-db-ja.com

コマンドラインで使用されているphp.iniファイルを見つける方法は?

EasyPhp環境でpdo_mysqlを有効にする必要があるので、php.iniファイルに移動して次の行のコメントを外します。

extension=php_pdo_mysql.dll

残念ながら、私はまだ同じ問題を抱えています。私はCLIを使用しているので、CLIで使用されるphp.iniファイルを見つける必要があると思います。どうやって見つけることができますか?

344

php --iniを実行して、CLIで使用されているLoaded Configuration Fileの場所の出力でphp.iniを探すだけです。

849
Mchl

あなたは完全なphpinfo()を得ることができます:

php -i 

そして、そこにはphp.iniファイルが使われています。

$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

Windowsでは、代わりに find を使用してください。

php -i|find/i"configuration file"
351
Pascal MARTIN
php --ini

usesパスと可能なiniファイルの詳細をすべて表示します。

32
Lode

そのために get_cfg_var( 'cfg_file_path') を使用できます。

システムが構成ファイルを使用しているかどうかを確認するには、cfg_file_path構成設定の値を取得してみてください。これが利用可能な場合は、設定ファイルが使用されています。
var_dump( get_cfg_var('cfg_file_path') );

そして、あなたは単に set php.iniの場所 とすることができます。あなたはコマンドラインバージョンを使用しているので、-cパラメータを使用してあなたは場所を指定することができます。

php -c /home/me/php.ini -f /home/me/test.php
14
VolkerK

あなたの端末でphp --iniを実行すると、iniファイルに関するすべての詳細が得られます。

[root@tamilan src]# php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/apc.ini,
/etc/php.d/bcmath.ini,
/etc/php.d/curl.ini,
/etc/php.d/dba.ini,
/etc/php.d/dom.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/Gd.ini,
/etc/php.d/imap.ini,
/etc/php.d/json.ini,
/etc/php.d/mbstring.ini,
/etc/php.d/memcache.ini,
/etc/php.d/mysql.ini,
/etc/php.d/mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/posix.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/ssh2.ini,
/etc/php.d/sysvmsg.ini,
/etc/php.d/sysvsem.ini,
/etc/php.d/sysvshm.ini,
/etc/php.d/wddx.ini,
/etc/php.d/xmlreader.ini,
/etc/php.d/xmlwriter.ini,
/etc/php.d/xsl.ini,
/etc/php.d/Zip.ini

詳細については、helpコマンドphp --helpを使用してください。すべての可能なオプションが表示されます。

13
Sathish

すべての設定ファイルをロードしたいのであれば、これがわかります。

php -i | grep "\.ini"

システムによっては、複数のiniファイルからものをロードします。私のUbuntuシステムでは、このようになります。

$  php -i | grep "\.ini"
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Scan this dir for additional .ini files => /etc/php5/cli/conf.d
additional .ini files parsed => /etc/php5/cli/conf.d/apc.ini,
/etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/Gd.ini,
/etc/php5/cli/conf.d/mcrypt.ini,
/etc/php5/cli/conf.d/memcache.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini
7
Reece45

OSX Mavericksでは、次のコマンドを実行します。

$ php -i | grep 'Configuration File'

戻ってきた:

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

/etc/ディレクトリには、

php.ini.default

php-fpm.conf.defaultと同様に)

php.ini.defaultphp.iniにコピーし、date.timezone = "US/Central"を上([php]の真下)に追加すると、問題は解決しました。

(少なくともエラーメッセージは消えました。)

6
MikeiLL

時々のことは、それらが一般的に設定ファイルに来るときに見られるように常にではありません。だからここで私はプロセスによって開かれているファイルを調べるために私の通常の方法を適用しています。

私は、 strace という非常に強力で便利なコマンドラインプログラムを使用して、実際に何が起きているのかを示しています。

$ strace -o strace.log php --version
$ grep php.ini strace.log

Straceは、プログラムが作成したカーネル(システム)呼び出しを調べ、その出力を-oで指定されたファイルにダンプします。

このログでphp.iniの出現箇所を検索するには grep を使用するのが簡単です。何が起こっているのかを見るために、次の典型的な応答を見るのは明らかです。

open("/usr/bin/php.ini", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/etc/php.ini", O_RDONLY)          = 3
lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69105, ...}) = 0
6
thomas-peter

他のアプリに渡す必要がある場合は、次のようにします。

php --ini | grep Loaded | cut -d" " -f12

パスのみを返します。 php -c $(php --ini | grep Loaded | cut -d" " -f12)は設定ファイルを渡します(fpmに役立ちます)

4
Mike Mackintosh

EasyPHPを使用していたときに覚えていたことから、php.iniファイルはC:\Windows\またはC:\Windows\System32にあります。

3
Tim Cooper

Php.iniファイルに拡張ディレクトリを設定します。

extension_dir = "C:/php/ext/"

PHPフォルダの中に、すべてのdllと拡張子を含むextフォルダがあるのがわかります。

1
Marc Uberstein

行う

find / -type f -name "php.ini" 

これはphp.iniという名前のすべてのファイルを出力します。

どちらを使っているか調べてください。通常はApache2/php.iniです。

1
Han Van Pham