php.iniの設定とは?項目の確認方法と設置場所の探し方を解説!
この記事からわかること
- php.iniファイルの概要
- 使用頻度の高い構成ディレクティブ(項目)
- 設定値の確認方法
- 設置場所の探し方
- 記述、変更の仕方と注意点
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
PHPを使うにあたって色々な設定が前もってphp.iniファイルで決められています。
では実際にどのような場所にあり、どのような項目が決められていまるのかまとめていきたいと思います。
php.iniファイルとは?
php.iniファイルとはphpの初期設定ファイルのことです。拡張子の「ini」はinitialize(初期化)の iniでしょうか?
この初期設定ファイルに記述した内容がphpの動作を決めます。例えばエラーを表示させないようにしたり、タイムゾーン(どこの国の時刻を基準とするか)を設定できたりします。
PHPの動作を決める設定項目を構成ディレクティブと言います。
ディレクティブとは「指示」と言った意味の英単語で、早い話がPHPの構成を指示する項目だよということですね!初期値に設定されているのは使っているサーバーによって違うかも知れないので注意してください。
使用頻度の高い構成ディレクティブ
php.iniに設定されている構成ディレクティブのうち変更することが多いものを紹介します。
mbstring.language
mbstring.language = Japanese
マルチバイトの言語設定を決める構成ディレクティブです。値は「japanese」にしておけばOKです。
マルチバイトとは日本語のように1バイトで表すことができない文字のことを指します。
「abc」や「123」などはングルバイト文字と呼ばれ1バイト(=8ビット)以内で表すことができます。しかし8ビットで表せる文字にも限度あり、ひらがなや漢字など文字が多いものは2バイト(=16ビット)や3バイト(=24ビット)で表しています。
イメージで言うと文字のデータ量に差がありマルチバイト文字は容量が大きいという認識で良いと思います。
session.auto_start
session.auto_start = 1 // ON or 0 OFF
スーパーグローバル変数$_SESSIONを自動でスタートさせる設定です。セッションは通常使用する前に session_start関数
で明示的にセッションの開始を宣言しなければなりませんが、この項目をONにしておくとセッションを自動でスタートさせてくれます。
関連記事:【php】SESSION(セッション)とcookie(クッキー)の違いは?メリットと仕組みを徹底解説!
display_errors
display_errors = 1 // ON or 0 OFF
Webブラウザにエラーメッセージを表示させるかさせないかを決める設定です。
phpファイルを作成する時やデバッグするときにONにしておくとエラーが表示されるので解決がしやすくなります。
エラー表示に重要な情報が出ることもあるので公開する時にはOFFに設定するように注意が必要です。
error_reporting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
出力するエラーの種類を設定する構成ディレクティブです。「E_ALL」などのエラー種別を指定することで指定したエラー種別のみが出力されるようになります。
upload_max_filesize
upload_max_filesize = 32M
アップロードできるファイルの最大サイズを設定できる構成ディレクティブです。
値は「○M」と言う形で指定できます。Mはメガバイトです。
date.timezone
date.timezone = "Asia/Tokyo"
DateTimeオブジェクトを使用する時のタイムゾーンの設定する構成ディレクティブです。
php内の時計をどこに合わせるかを選択できます。日本で使う場合は「Asia/Tokyo」としておけばOKです。何も指定しないとUTC(Universal Time Coordinated:協定世界時間)になります。
スクリプト内でタイムゾーンを動的に設定し直す方法も沢山あるのでこちらの記事をご覧ください。
【PHP】DateTimeオブジェクトの使い方!日付操作や設定の仕方を徹底解説!
設定値の確認方法
自分が使用しているphp.iniの設定値を確認したいときは2つの方法で確認することができます。
- 1.phpファイル(スクリプト)内で動的に確認する
- 2.iniファイルを直接見に行って確認する
phpファイル(スクリプト)内で動的に確認する
まずはスクリプト内で関数を使って設定値を確認する方法をご紹介します。
phpinfo関数
phpinfo();
phpinfo関数はPHPの設定情報をwebブラウザ上に出力する関数です。上記の1行を記述するだけで下画像のようにPHPの設定情報が一覧となって表示されます。スタイルも定義されているので何もしなくても見やすくなっています。
ブラウザを介さないと見えないのでローカル環境などで確認する時に便利な関数です。
ini_get関数
echo ini_get('upload_max_filesize'); // 結果:32M
ini_get関数は設定情報を取得できる関数です。全ての情報を取得するわけではなく引数に指定した項目の値のみを取得してくれます。
取得した構成ディレクティブの値が「off」などの真偽値の場合、「空文字」または「0」を返します。
ini_get_all 関数
var_dump(ini_get_all());
// 結果:array(220) { ["allow_url_fopen"]=> array(3) { ["global_value"]=> string(1) "1" ["local_value"]=> string(1) "1" ["access"]=> int(4) }......
$array = ini_get_all();
echo $array['session.auto_start'] ["local_value"];
// 結果:0(ローカル設定値)
$array = ini_get_all(null, false);
echo $array['upload_max_filesize'];
// 結果:32M(現在の設定値)
ini_get_all関数は設定情報を全て取得できる関数です。この関数を実行すると戻り値として項目名をキー値に値が格納された連続配列を返します。
連想配列はキー値の中にさらに「global_value((php.iniで設定された値)」「local_value(ini_set()などで動的に設定された値)」「access(アクセスレベル)」をキー値とした連想配列に格納されます。
アクセスレベルはその構成ディレクティブがphp.iniでのみ設定できるものなのかスクリプト内で動的に設定できるものなのかを示した指標です。
また第2引数にfalse
を指定することで現在反映されている設定値のみを取得できるようになります。
php.iniファイルを直接見に行って確認する
先ほどは値を確認する方法を紹介しましたが、次は適応されているphp.iniファイルを探す方法をご紹介します。
Xサーバーでの探し方と設定方法
Xサーバーでの探し方と設定方法はだいぶ簡単です。
サーバーパネルにログインして「php.ini設定」をクリック。
探したいドメインを選択します。
するとphp.iniの「設定変更」や「直接編集」、「設定初期化」などのタブが出てくるのでここから編集することができます。
「設定変更」ではよくある項目が並んでおり、値を入力するだけで簡単に設定を変更することが可能です。
「直接編集」では並んでいる項目にない設定を変更することができます。ただしphp.iniファイルを直接編集することになるので取扱いには注意が必要です。
MAMPでの探し方と設定方法
Xサーバーと違いローカル環境(今回はMAMP)での探し方と設定方法です。
MAMPの初期画面から「WebStart」で開いたページの「Tools」>「phpinfo」をクリックすると適応されているphp.iniのパスが記載されています。
この画面は先ほどphpinfo関数
を使用した時と同じ画面ですね!
そこに記載されているパス「/Applications/MAMP/bin/php/php7.4.12/conf/php.ini」を覚えておき、MAMPファイルの中を深掘りしていくと該当のファイルが見つかるはずです。あとはこれをエディタで開いて編集→再起動すればOKです。
再起動の方法は最初の画面の「WebStart」の右横の「stop」を押して再度「start」を押すだけです。
MAMPのphp.iniファイルは下画像のように色々な設定がコメントアウトされて記述されています。該当の行のコメントアウトを外したり値を変更して有効にしてあげれば設定が反映されるはずです。
php.iniのスクリプト内での設定方法
php.iniの設定値はファイルをエックスサーバーであれば専用ページから、MAMPであれば直接編集できることがわかりましたが、動的にphpファイル(スクリプト内)からの設定も動的な可能です。
ini_set関数
echo ini_get('display_errors'); // 結果: "" (off)
ini_set('display_errors', '1'); // セット
echo ini_get('display_errors'); // 結果: 1
ini_set関数はスクリプト内でphp.iniの設定を変更できる関数です。再起動の手間がなくスクリプトごとに臨機応変に変更できます。
構成ディレクティブごとにアクセスレベルが決められており、ini_set関数では変更できない項目をあるので注意が必要です。
ini_restore関数
ini_restore関数は動的に変更したphp.iniの設定を元の値に戻す関数です。
echo ini_get('display_errors'); // 結果: "" (off)
ini_set('display_errors', '1'); // セット
echo ini_get('display_errors'); // 結果: 1
ini_restore('display_errors'); // 戻す
echo ini_get('display_errors'); // 結果: "" (off)
date_default_timezone_set関数
date_default_timezone_set('Asia/Tokyo');
タイムゾーンに関しては別の関数が用意されているのでこちらを使って動的に設定できます。
php.iniに関する設定や情報をまとめたこの記事が誰かの役に立っていると幸いです。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。