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


389

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

extension=php_pdo_mysql.dll

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



@sjas間違いではありません。それは正しく、CLIにロードされたphp.iniのパスを知らせます。
SaidbakR 2016

回答:


951

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


5
@Mchl私はあなたに賛成票を投じますが、私はあなたが答えをgrepで行に投稿すべきだったと思います。
ジムW.

9
@BradFJacobsこれがクロスプラットフォームになったときに、なぜgrepを使用するのですか?
Garet Claborn、2014年

しかし、これは、CLIを介してPHPを使用するときにロードされるものを示しているだけではありません(それからコマンドを実行しているため)。
Antony D'Andrea

1
@ AntonyD'Andrea:これがまさに質問の内容です。見る?タイトルにもそのように記載されています:コマンドラインで使用されるphp.iniファイルを見つける方法は?
Mchl、2015年

これは私の場合のI型では...私の答えではありません sudo find / -iname php.ini、それは創設/etc/php/7.0/apache2/php.iniそれはによって発見されなかったことを私のマシンの右側のphp.ini設定ファイルの適切な場所php --iniphp -i | grep php.ini(両方見つかりました/etc/php/7.0/cli/php.ini
NineCattoRules

366

あなたは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"

12
次に、このphpインスタンスはphp.iniをまったく使用せず、デフォルト値を使用しました。Configuration Filephpinfo()の行は、phpがiniファイルを探した最後の場所を示しています。これは、そのようなファイルを見つけた場所か、Windowsで%SYSTEMROOT%となる最後のオプションのいずれかです。
VolkerK 2010年

2
@pascal:php -i | find "Configuration file"Windowsで動作するはずです。確かにgrepほど強力でfindはありませんが、基本的な文字列検索を実行します。もちろん、php -iがその出力をstderrにダンプする場合は、おそらくSOLです。
マークB

2
findデフォルトでは大文字と小文字が区別されるため、完全にするか(php -i | find "Configuration File")、大文字と小文字を区別しないようにする必要があります(php -i | find /i "Configuration file"- /iフラグに注意してください)。
deizel

9
php --ini代替として追加することを検討してください。PHP 5.2.3以降で利用可能:)
ジャック・

2
誰も言っていない、php_ini_loaded_fileを呼び出すことでスクリプトからその値を取得することが可能であり、必要に応じてphp_ini_scanned_files
Radek Benkel '28

16

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

システムが構成ファイルを使用しているかどうかを確認するには、cfg_file_path構成設定の値を取得してみてください。これが使用可能な場合、構成ファイルが使用されています。
phpinfo()とは異なり、php.iniがまったく見つからないか使用されていないかどうかを通知します。

var_dump( get_cfg_var('cfg_file_path') );

そして単純にphp.iniの場所を設定できます。コマンドラインバージョンを使用しているため、-cパラメーターを使用して場所を指定できます。例:

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

13

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

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


8

時々、一般的な設定ファイルに関しては、常にそうであるとは限りません。ここでは、通常の方法を適用して、プロセスによって開かれているファイルを調査します。

私は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

1
php -i私は間違った結果を出しましたが、これは完全に大丈夫です。ありがとうございました!
ドミトリーギン

7

すべての構成ファイルをロードする場合は、次のようになります。

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

6

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.defaultして上php.iniに追加date.timezone = "US/Central"することができました(右下[php])。問題は解決しました。

(少なくともエラーメッセージは表示されません。)


5

別のアプリに渡す必要がある場合は、次のようなことができます。

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

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


3

私はEasyPHPを使用するために使用されたとき、私は覚えていることから、php.iniファイルは、のいずれかですC:\Windows\か、C:\Windows\System32


2
C:\ WINDOWSと言っています。でも真剣に見つけられなかった!
Amokrane Chentir、

2

行う

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

これにより、という名前のすべてのファイルが出力されphp.iniます。

通常はどちらを使用しているかを調べます apache2/php.ini


php.iniファイルがない場合(一部のDockerコンテナー)、これは機能しません。したがって、受け入れられた回答の方が適しています。
マヌエルマンハート

myyyyyyyyyy man
ドキュメント休日

@emilioestevez *女性
willsmanley

1

php.iniファイルで、拡張ディレクトリを設定します。例:

extension_dir = "C:/php/ext/"

PHPフォルダーに、すべてのDLLと拡張機能を含むextフォルダーがあることがわかります。


0

CLI phpinfoの出力をローカルファイルに保存します。

php -i >> phpinfo-cli.txt

0

Dockerコンテナのphpmyadmin / phpmyadminにphp.iniファイルがありません。しかし、2つのファイルがあります:php.ini-debugとphp.ini-production

この問題を解決するには、いずれかのファイルの名前をphp.iniに変更し、Dockerコンテナーを再起動します。


-4

コマンドラインで使用されるphp.iniはありません。ファイルをからコピーして、phpディレクトリのファイルを編集する...EasyPHP-<<version>>\apache\php.ini 必要...EasyPHP-<<version>>\php\php.iniがあります

参照:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.