====== PHP7.2 php.iniの編集 ======
Version 7.2.22 --- [[http://www.y2sunlight.com|y2sunlight]] 2019-10-17 \\
Version 7.3.15 --- [[http://www.y2sunlight.com|y2sunlight]] 2020-03-06 \\
> PHP7.2をPHP7.3と読み替えても内容は同じです
[[php:top|PHPに戻る]]
関連記事
* [[php:7.2:httpd.conf|PHP7.2 Apache2の設定]]
* PHP7.2 php.iniの編集
* [[php:7.2:ext:intl|PHP7.2 intlのインストール]]
* [[php:7.2:ext:zmq|PHP7.2 ZeroMQのインストール]]
----
===== 概要 =====
本編ではローカル環境にPHPスクリプトのテスト環境を構築しています。従ってPHPの設定は、公開用サーバなどの設定とは異なります。セキュリティに関する考慮などをしていませんのでご注意下さい。また、設定ファイル等の存在場所はXAMPPの設定に従います。
PHPの初期設定はphp.iniで行います。php.iniは以下の場所にあります。
{XAMPP Install Folder}\php\php.ini
php.iniでは以下の書式でディレクティブを指定します。
書式: <ディレクティブ名> = <値>
セミコロン(;)で始まる行はコメントになります。また、[PHP]のような一見するとセクションヘッダに見える行もコメントです。実際、[PHP]のような行が無くても設定はできます。但し、将来的に何らかの意味をもつ可能性があります。
php.iniは、まず最初に[PHP]があり、PHPのコア部分を設定するディレクティブが長々と続きます。この中には、
* 言語オプション(Language Options)
* リソース制限(Resource Limits)
* エラー処理(Error handling and logging)
* データ処理(Data Handling)
* パスとディレクトリ(Paths and Directories)
* ファイルアップロード(File Uploads)
* Fopenラッパー(Fopen wrappers)
* 動的エクステンション(Dynamic Extensions)
に関する設定があります。次に各モジュールを設定するディレクティブが現れます(Module Settings)。ここでは、[MySQL]や[mbstring]のようなセクションヘッダらしきもので区切られています。
php.iniに関する詳細は、以下を参照して下さい。
* https://www.php.net/manual/ja/ini.php
\\
===== テスト環境のphp.ini =====
以下では、本編の目的である「PHPスクリプトのテスト環境の構築」を行うための設定内容を、php.ini で出現するディレクティブの順に挙げます。尚、ここでは、インストール後に変更したもの及び説明のために特に重要と思われる主要な設定内容のみを挙げています。
==== [PHP]言語オプション ====
output_buffering = 4096
output_bufferingは出力バファリングの設定を行います。OnまたはOffで指定します。出力バファリングをOnにすると、HTTP BODYを出力した後でもHTTPヘッダが出力できます。Onの代わりに実際のバファサイズの制限(4096)などを指定する事もできます。
\\
==== [PHP]リソース制限 ====
memory_limit = 512M
memory_limit 、スクリプトが確保できる最大メモリをバイト数で指定します。この命令は、正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。後述のpost_max_size(最大POSTサイズ)はこの値より大きくすることはできません。
画像サムネイルの作成など多くのメモリを必要とする場合、この値を変更する必要があるかもしてません。もし、使用可能メモリに制限を設けたくない場合は、ここに -1 を指定してください。
\\
==== [PHP]エラー処理 ====
display_errors = On
log_errors = On
error_log="D:\usr\xampp7.2.22\php\logs\php_error.log"
display_errorsはエラー表示の設定を行います。OnまたはOffで指定します。本編はテスト用の環境なのでOnに設定しますが、実運用環境ではOffにする事が推奨されています。
log_errorsはエラーログの設定を行います。OnまたはOffで指定します。本編ではdisplay_errorsをOff(デフォルト)からOnに変更します。Onにした場合のエラーログの出力先はerror_logで設定します。error_logを指定しない場合は、Webサーバのログファイルに出力されます。
error_logはエラーログの出力先は設定します。ここでは、PHP7のインストールディレクトリ下にlogsフォルダを作成し、エラーログファイルとして"D:\usr\xampp7.2.22\php\logs\php_error.log"を指定しました。尚、error_logの値をsyslogに指定するとWindowsのイベントログ(アプリケーションログ)に出力できます。
\\
==== [PHP]データ処理 ====
post_max_size = 40M
default_mimetype = "text/html"
default_charset = "UTF-8"
post_max_sizeは一回のリクエストでPOSTできるの最大のサイズを指定します。この設定は、upload_max_filesize(ファイルの最大アップロードサイズ)にも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。また、一般的に 前述のmemory_limit は、post_max_sizeよりも大きく する必要があります。
default_mimetypeとdefault_charsetはHTTPのContent-typeヘッダに加えるMIMEタイプと文字セットを設定します。
\\
==== [PHP]パスとディレクトリ ====
include_path = "D:\usr\xampp7.2.22\php\PEAR"
extension_dir = "D:\usr\xampp7.2.22\php\ext"
include_pathはrequire()、include()など関数の検索パスを設定します。require()などの関数、例えば:
include('mylib.php');
では、まず最初にカレントディレクトリからの相対パスでファイルが検索され、続いてinclude_pathが使用されます。
extension_dirは拡張モジュールのあるディレクトリを設定します。extension_dirは以下の動的エクステンションをロードするextensionディレクティブで使用されます。
\\
==== [PHP]ファイルアップロード ====
upload_max_filesize = 40M
max_file_uploads = 20
upload_max_filesize は、1ファイルあたりの最大アップロードサイズを、max_file_uploadsは、1回のリクエストでアップロードできる最大のファイル数を指定します。upload_max_filesize は前述のpost_max_sizeを超える事はできません。
\\
==== [PHP]動的エクステンション ====
extension=bz2
extension=curl
extension=fileinfo
extension=gd2
extension=gettext
extension=mbstring
extension=exif
extension=mysqli
extension=pdo_mysql
extension=pdo_sqlite
extension=php_openssl.dll
extension=php_ftp.dll
extensionは拡張モジュールを自動的にロードする場合に使用するディレクティブです。extensionではモジュール名のみを指定します。配置場所(パス)はextension_dirで指定します。
extensionで指定するモジュール名はOSによって異なり、Windwosの場合、例えば上の例(bz2)ではextension_dirの下に php_bz2.dll があり、'bz2'の部分がモジュール名に相当します。
XAMPP7.2.22でインストールしたphp.iniでは上の拡張モジュールがデフォルトで有効になっています。これら以外の拡張モジュールも設置可能なので、インストールしたphpのextensionフォルダを確認して見てください。尚、PHP拡張モジュールの Windows へのインストール の詳細は以下を参照して下さい。
> https://www.php.net/manual/ja/install.pecl.windows.php
\\
===== .htaccessによるディレクティブの設定 =====
PHP を Apache 拡張モジュールで使用する場合、Apacheのhttpd.confや.htaccessファイルにphp.iniのディレクティブを記述する事ができます。通常、httpd.confが変更可能な人達(例えば:プロバイダやシステム管理者)はphp.iniを変更できる権限もあります。一方、一般の利用者はhttpd.confもphp.iniも変更できないので、.htaccessを利用する事になります。.htaccessファイルによるPHPディレクティブの上書きには、AllowOverride Optionsの権限が必要になります。
.htaccessで設定できるPHPディレクティブは、以下のPHPマニュアルの中で PHP_INI_ALL または PHP_INI_PERDIR と指定されているものだけです。
* http://www.php.net/manual/ja/ini.php
以下に、.htaccessの例を示します。
.htaccess
php_flag magic_quotes_gpc On
php_value include_path "./include"
php_flagはPHPディレクティブの値が論理値(boolean)の場合に使用し、php_valueは文字列(string)の場合に使用します。詳細は以下のURLを参照して下さい。
> http://www.php.net/jp/configuration.changes
Windowsで.htaccessを作成する場合は、少し工夫が必要です。エクスプローラで、[新規作成][テキスト ドキュメント]としてからファイル名を.htaccessに変更しようとしても上手くできません。メモ帳などのエディタから[名前を付けて保存]を使用して.htaccessファイルを作成するようにします。
\\
===== php.iniの確認 =====
php.ini で設定した内容は、phpinfo()関数のでプリントできます。XAMPPでは以下のURLでphpinfo()関数の実行ができます。
* http://localhost/dashboard/phpinfo.php
また、コマンドラインから行うには以下のようにします:
C:\>php -i
\\