php.iniの場所や反映された値、読み込み順を知りたい

PHP

php.iniの場所、反映された値、読み込み順やを知りたい

php.iniって謎が多いですよね・・・

OS内にphp.iniが複数あったりするけど、どの場所にあるphp.iniの設定が読み込まれているの?
複数読み込んだ時は値を上書き?1ファイルだけ読み込まれるの?
読み込む順番は?
conf.d?php.d?もうバージョンによって何がなんだか・・・

など、疑問を上げればきりがありません。

さらに!コマンドラインの時とWebサーバーの時で違ったりもするのです!

でも安心してください。全部ご紹介します!

Webサーバー(apache等)の場合

テストスクリプトで確認する

apacheなどのwebサーバーの場合はphpinfo()を使ってテストファイルを出力してみましょう

あくまで例ですが /var/www/html/phpinfo.php
に作成すれば
http://localhost/phpinfo.php
などでアクセス可能です。

<?php
	echo phpinfo();
?>

ブラウザで確認する

ブラウザからにはなりますが、様々な設定項目が確認できます。

設定値も確認できます。

コマンドラインのphpの場合

php.iniの場所や値を全て出力するコマンドオプション

「php -i」のコマンド一発で解決。

読み込んだphp.ini設定ファイルのパスを順番に表示した後、
パース結果の値を全部表示してくれます

$ php -i

phpinfo()
PHP Version => 5.4.16

System => Linux localhost.localdomain 3.10.0-1160.21.1.el7.x86_64 #1 SMP Tue Mar 16 18:28:22 UTC 2021 x86_64
Build Date => Apr  1 2020 04:07:13
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
Scan this dir for additional .ini files => /etc/php.d
Additional .ini files parsed => /etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/json.ini,
/etc/php.d/phar.ini,
/etc/php.d/php.ini,
/etc/php.d/php2.ini,
/etc/php.d/php3.ini,
/etc/php.d/zip.ini

PHP API => 20100412
PHP Extension => 20100525
Zend Extension => 220100525
Zend Extension Build => API220100525,NTS
PHP Extension Build => API20100525,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => disabled
Zend Memory Manager => enabled
Zend Multibyte Support => disabled
IPv6 Support => enabled
DTrace Support => disabled

Registered PHP Streams => https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, tls
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies


 _______________________________________________________________________


Configuration

bz2

BZip2 Support => Enabled
Stream Wrapper support => compress.bzip2://
Stream Filter support => bzip2.decompress, bzip2.compress
BZip2 Version => 1.0.6, 6-Sept-2010

calendar

Calendar support => enabled

Core

PHP Version => 5.4.16

Directive => Local Value => Master Value
allow_url_fopen => On => On
allow_url_include => Off => Off
always_populate_raw_post_data => Off => Off
arg_separator.input => & => &
arg_separator.output => & => &
asp_tags => Off => Off
auto_append_file => no value => no value
auto_globals_jit => On => On
auto_prepend_file => no value => no value
browscap => no value => no value
default_charset => no value => no value
default_mimetype => text/html => text/html
disable_classes => no value => no value
disable_functions => no value => no value
display_errors => Off => Off
display_startup_errors => Off => Off
doc_root => no value => no value
docref_ext => no value => no value
docref_root => no value => no value
enable_dl => Off => Off
enable_post_data_reading => On => On
error_append_string => no value => no value
error_log => no value => no value
error_prepend_string => no value => no value
error_reporting => 22527 => 22527
exit_on_timeout => Off => Off
expose_php => On => On
extension_dir => /usr/lib64/php/modules => /usr/lib64/php/modules
file_uploads => On => On
highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font style="color: #FF8000">#FF8000</font>
highlight.default => <font style="color: #0000BB">#0000BB</font> => <font style="color: #0000BB">#0000BB</font>
highlight.html => <font style="color: #000000">#000000</font> => <font style="color: #000000">#000000</font>
highlight.keyword => <font style="color: #007700">#007700</font> => <font style="color: #007700">#007700</font>
highlight.string => <font style="color: #DD0000">#DD0000</font> => <font style="color: #DD0000">#DD0000</font>
html_errors => Off => Off
ignore_repeated_errors => Off => Off
ignore_repeated_source => Off => Off
ignore_user_abort => Off => Off
implicit_flush => On => On

/etc/php.d/の下の*.iniは辞書順に読み込まれていますね

ファイルの読み込み情報部分

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
Scan this dir for additional .ini files => /etc/php.d
Additional .ini files parsed => /etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/json.ini,
/etc/php.d/phar.ini,
/etc/php.d/php2.ini,
/etc/php.d/php3.ini,
/etc/php.d/zip.ini

とにかく*.iniを次々に順番に読み込んでいき値を上書きしていきます。

php.iniが2つあっても同様です。

出力が長いので値の絞り込み

値の表示については見たい奴だけ見みてみましょう

$ php -i | grep  memory_limit
memory_limit => 500M => 500M

おまけ

実は以下のコマンドを実行するとファイルパス検索の情報だけが出ます。
でもphp -iは全部でるので覚えるのはこれだけでいいと思います。

$ php --ini

コメント

タイトルとURLをコピーしました