php.iniファイルの作成と初期設定

PHP に関する設定を記述する php.ini ファイルはデフォルトでは作成されていません。用意されている雛形を使って新しく作成する必要があります。ここでは php.ini ファイルの作成方法、 php.ini ファイルに対して行っておく初期設定、および php.ini の設定内容を確認するための phpinfo 関数の使い方について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 08 日更新)

php.iniファイルをひな形から作成する

php.ini ファイルは最初から作成する必要はありません。用意されている雛形をコピーして作成し、後から必要な個所を変更して利用します。雛形となるファイルは PHP をインストールしたディレクトリに含まれている次の2つのファイルです。

php.ini-development
php.ini-production

php.iniファイルをひな形から作成する(1)

php.ini-production ファイルは実際の本番環境で使用する場合に適した雛形で、 php.ini-production ファイルは開発環境で使用する場合に適した雛形となっています。

今回は php.ini-development ファイルの方を使ってみます。最初から作り直したい時のために php.ini-development ファイルはそのまま残しておき、コピーしたものを使用するようにして下さい。 php.ini-development ファイルをコピーし、ファイル名を php.ini に変更してください。

php.iniファイルをひな形から作成する(2)

これで元となる php.ini ファイルが作成できました。

作成した php.ini ファイルはテキストファイルです。その為、既存のテキストエディタで開いたり編集したりすることができます。では実際にテキストエディタで開いて見ます。

php.iniファイルをひな形から作成する(3)

それでは作成した php.ini をベースとして必要な修正を加えていきます。

phpinfo関数による設定内容の確認

PHP の phpinfo 関数は PHP の設定内容を出力する関数です。 php.ini ファイルに変更を加えたあとで phpinfo 関数によって出力された値を確認すれば、変更した内容がきちんと反映されているのかどうかを確認することができます。

それでは phpinfo 関数を含む簡単な PHP スクリプトを記述したファイルを作成します。テキストエディタを開き下記の内容を記述して下さい。

<?php
phpinfo();
?>

作成したファイルは phpinfo.php というファイル名で Apache のドキュメントルートに設置して下さい。

phpinfo関数による設定内容の確認(1)

Apache を起動した状態で、ブラウザから「http://localhost/phpinfo.php」へアクセスして下さい。次のように PHP の設定内容に関する情報が表示されます。

phpinfo関数による設定内容の確認(2)

設定されている内容を確認したい場合にはこのように phpinfo 関数を使って設定内容を出力してみて下さい。ただし外部からアクセス可能な場所に phpinfo 関数を使ったファイルをいつまでも残しておくことはお勧めできません。使用が終わりましたら速やかに削除して下さい。

読み込まれているphp.iniファイルを確認する

現在どの php.ini ファイルを読み込んでいるのかを確認するには Loaded Configuration File の値を確認して下さい。

読み込まれているphp.iniファイルを確認する(1)

現在 PHP で読み込まれている php.ini ファイルの場所は c:\pg\PHP\php.ini であることが確認できます。

拡張モジュールのディレクトリ設定(extension_dir)

ここからは php.ini ファイルに対する初期設定です。最初は拡張モジュールのディレクトリ設定についてです。

拡張モジュールのディレクトリの場所について php.ini では extension_dir という項目で設定しています。現在の設定は phpinfo 関数を使って確認してみると C:\php\ext になっています。

拡張モジュールのディレクトリ設定(1)

今回 PHP をインストールしたディレクトリが異なるため、実際のディレクトリは C:\pg\php\ext です。そこで php.ini を編集して設定を変更します。 php.ini ファイルを開き extension_dir で検索してください。次のような記述が見つかります。

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
;extension_dir = "ext"

extension_dir の先頭に記述されている ";" を削除して次のように書き換えます。

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
extension_dir = "C:/pg/php/ext"

php.ini ファイルを保存したあと、設定を反映させるために Apache を再起動して下さい。そのあとで改めて phpinfo 関数を使って確認してみると、変更した内容が反映されていることが確認できます。

拡張モジュールのディレクトリ設定(2)

日本語利用に関する設定(mbstring)

日本語などマルチバイト文字を使うには拡張モジュールの php_mbstring.dll を有効にし、その後で mbstring に関する設定を行う必要があります。

php.ini ファイルをテキストエディタで開き extension=mbstring で検索して下さい。

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

;extension=mbstring

現在はコメントとなっていますので拡張モジュールを有効にするには先頭の ";"を外してください。

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

extension=mbstring

これで php_mbstring.dll の有効化は完了です。

続いて mbstring の設定を行います。 php.ini ファイルでは次のように記述されています。

[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
;mbstring.language = Japanese

; 次の 3 項目は PHP 8 で非推奨となりました
;mbstring.internal_encoding =
;mbstring.http_input =
;mbstring.http_output =

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
; http://php.net/mbstring.encoding-translation
;mbstring.encoding_translation = Off

; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
;mbstring.detect_order = auto

; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
;mbstring.substitute_character = none

; Enable strict encoding detection.
;mbstring.strict_detection = Off

多くの設定項目があります。各設定の「;」を外した後でそれぞれ設定を行っていきます。

mbstring.languagembstring で使用される言語設定(NLS)のデフォルト値です。

; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
mbstring.language = Japanese

HTTP 入力文字変換を無効にするには mbstring.encoding_translationOff を設定します。

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
; http://php.net/mbstring.encoding-translation
mbstring.encoding_translation = Off

mbstring.detect_order は文字コードの自動判別を行う時にどの文字コードから順に確認していくのかを指定します。 auto に設定するとどの文字コードから判別するか分かりませんので明示的に指定しておきます。

; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII

mbstring.substitute_character は無効な文字を代替する文字を定義します。文字を出力しない場合は none を指定します。

; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
mbstring.substitute_character = none

mbstring.strict_detection は文字コードの自動判別を厳密に行うかどうかの設定です。それぞれメリットデメリットがありますが今回は Off にしました。

; enable strict encoding detection.
; Default: Off
mbstring.strict_detection = Off

それぞれの項目について設定部分だけを抜き出すと次のようになります。

[mbstring]
mbstring.language = Japanese
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.strict_detection = Off

php.ini ファイルを保存したあと、設定を反映させるために Apache を再起動して下さい。そのあとで改めて phpinfo 関数を使って確認してみると、変更した内容が反映されていることが確認できます。

日本語利用に関する設定(mbstring)(1)

インクルードパスの設定(include_path)

PHP が記述されたファイルから外部のファイルをインクルードする時に、インクルードするファイルを設置するディレクトリの設定を行うのがインクルードパスです。インクルードパスのディレクトリの場所について php.ini では include_path という項目で設定しています。現在の設定は phpinfo 関数を使って確認してみると .;C:\php\pear になっています。

インクルードパスの設定(include_path)(1)

インクルードパスは複数のパスを指定することができ、複数指定する場合はセミコロン(;)で区切って記述します。今回インクルードパスとして 「.」「c:\pg\PHP\pear」「c:\pg\PHP\includes」の 3 つを設定します。 php.ini ファイルを開き include_path で検索してください。次のような記述が見つかります。

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
;
; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path

include_path の先頭に記述されている ";" を削除して次のように書き換えます。

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
include_path = ".;c:/pg/php/pear;c:/pg/php/includes"
;
; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path

php.ini ファイルを保存したあと、設定を反映させるために Apache を再起動して下さい。そのあとで改めて phpinfo 関数を使って確認してみると、変更した内容が反映されていることが確認できます。

インクルードパスの設定(include_path)(2)

-- --

php.ini ファイルの作成方法、 php.ini ファイルに対して行っておく初期設定、および php.ini の設定内容を確認するための phpinfo 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。