Ground Sunlight

Windowsで作る - Webプログラミングの開発環境(PHP)

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

道具箱

フレームワーク編

REST-API構築編

Webサービス編

メタ


このページへのアクセス
今日: 2 / 昨日: 1
総計: 34

php:7.2:php.ini
本編は投稿中です。しばらくお待ち下さい。

PHP7.2 php.iniの編集

y2sunlight 2019-10-17

PHPに戻る

関連記事


本編ではローカル環境にPHPスクリプトのテスト環境を構築しています。従ってPHPの設定は、公開用サーバなどの設定とはまったく異なります。セキュリティに関する考慮をしていませんのでご注意下さい。

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)

に関する設定があります。次に各モジュールを設定するディレクティブが現れます。ここでは、[MySQL]や[mbstring]のようなセクションヘッダらしきもので区切られています。

以下では、本編の目的である「PHPスクリプトのテスト環境の構築」を行うための設定内容を、php.ini で出現するディレクティブの順に挙げます。尚、ここでは、インストール後に変更したもの及び説明のために特に重要と思われる主要な設定内容のみを挙げています。php.iniに関する詳細は、以下を参照して下さい。

[PHP]言語オプション

output_buffering = Off
;output_handler =

output_bufferingは出力バファリングの設定を行います。OnまたはOffで指定します。出力バファリングをOnにすると、HTTP BODYを出力した後でもHTTPヘッダが出力できます。Onの代わりに実際のバファサイズの制限(4096)などを指定する事もできます。

output_handlerは出力ハンドラの設定を行います。出力ハンドラを指定するとPHPからの標準出力を指定の関数にリダイレクトする事ができます。output_handlerを指定するとoutput_bufferingは自動でOnになります。php.iniでoutput_handlerを指定する代わりにob_start関数を使って出力ハンドラを指定する事もできます。

output_handlerは文字エンコーディングと関係が深いので本節の「文字コードの設定」を参照して下さい。

[PHP]エラー処理

display_errors = On
log_errors = On
error_log = "C:/php5/log/error.log"

display_errorsはエラー表示の設定を行います。OnまたはOffで指定します。本編はテスト用の環境なのでOnに設定しますが、実運用環境ではOffにする事が推奨されています。

log_errorsはエラーログの設定を行います。OnまたはOffで指定します。本編ではdisplay_errorsをOff(デフォルト)からOnに変更します。Onにした場合のエラーログの出力先はerror_logで設定します。error_logを指定しない場合は、Webサーバ(本編では:Apache2)のログファイルに出力されます。

error_logはエラーログの出力先は設定します。ここでは、PHP5のインストールディレクトリ下にlogフォルダを作成し、エラーログファイルとして“C:/php5/log/error.log”を指定しました。尚、error_logの値をsyslogに指定するとWindowsのイベントログ(アプリケーションログ)に出力できます。

[PHP]データ処理

magic_quotes_gpc = Off
default_mimetype = "text/html"
default_charset = "EUC-JP"

magic_quotes_gpcはGPC(HTTPのGet/Post/Cookie)に対するマジッククォートの設定を行います。マジッククォートとは、'(シングルクオート)、“(ダブルク オート)、\(バックスラッシュ) 、NULLに対して、自動的に\(バックスラッシュ)でエスケープされる処理の事です。本編ではOn(デフォルト)からOffに変更します。

PHPではGetをG、PostをP、CookieをC、環境変数をE、サーバ変数をSと表記し、それらを組み合わせてGPCやEGPCSなどと呼んでいます。

default_mimetypeとdefault_charsetはHTTPのContent-typeヘッダに加えるMIMEタイプと文字セットを設定します。ここでは、default_charsetにEUC-JPを指定しています。本編はWindowsを対象としているのでShift_JISを設定したいところです。「1.1 PHP5 Windows版のインストール」でダウンロードしたWindowsバイナリがマルチバイト対応ではなかったので、PHPの内部コードをShift_JISにする事ができません。従って、内部コード系とデフォルトの出力コード系をEUC-JPで統一する事にします。

[PHP]パスとディレクトリ

include_path = ".;C:/php5/includes"
extension_dir = "C:/php5/ext"

include_pathはrequire()、include()など関数の検索パスを設定します。require()などの関数、例えば:

include('mylib.php');

では、まず最初にカレントディレクトリからの相対パスでファイルが検索され、続いてinclude_pathが使用されます。

extension_dirは拡張モジュールのあるディレクトリを設定します。本編ではC:\php5\extです。extension_dirは以下の動的エクステンションをロードするextensionディレクティブで使用されます。

[PHP]動的エクステンション

extension=php_mbstring.dll
;extension=php_mysql.dll

extensionは拡張モジュールを自動的にロードする場合に使用するディレクティブです。extensionではモジュール名のみを指定します。配置場所(パス)はextension_dirで指定します。

ここでは、文字コード変換を行うmbstringモジュールを有効にします。MySQLを使用する場合は、クライアントライブラリであるmysqlモジュールを有効にします。PHP5からは改良版のMySQLクライアントライブラリ(mysqli)も使用できます。MySQLについては「6.phpMyAdminでMySQLを使う phpMyAdminのインストール」を参照して下さい。

.htaccessによるディレクティブの設定

PHP を Apache 拡張モジュールで使用する場合、Apacheのhttpd.confや.htaccessファイルにphp.iniのディレクティブを記述する事ができます。通常、httpd.confが変更可能な人達(例えば:プロバイダやシステム管理者)はphp.iniを変更できる権限もあります。一方、一般の利用者はhttpd.confもphp.iniも変更できないので、.htaccessを利用する事になります。.htaccessファイルによるPHPディレクティブの上書きには、AllowOverride Optionsの権限が必要になります。本編でApacheはドキュメントルート以下に対して AllowOverride Allの権限を与えているので、.htaccessによるPHPの設定が可能です。

.htaccessで設定できるPHPディレクティブは、 PHPマニュアル:

でPHP_INI_ALL またはPHP_INI_PERDIR と指定されているものだけです。 以下に、.htaccessの例を示します。

.htaccess

<IfModule mod_php5.c>
  php_flag  magic_quotes_gpc On
  php_value include_path "./include"
</IfModule>

※mbstring関連のディレクティブ(mbstring.language、mbstring.internal_encoding など)も.htaccessで設定できます。

php_flagはPHPディレクティブの値が論理値(boolean)の場合に使用し、php_valueは文字列(string)の場合に使用します。詳細は以下のURLを参照して下さい。

Windowsで.htaccessを作成する場合は、少し工夫が必要です。エクスプローラで、[新規作成][テキスト ドキュメント]としてからファイル名を.htaccessに変更しようとしても上手くできません。メモ帳などのエディタから[名前を付けて保存]を使用して.htaccessファイルを作成するようにします。

php/7.2/php.ini.txt · 最終更新: 2019/10/17 13:39 by tanaka