-
Notifications
You must be signed in to change notification settings - Fork 82
Expand file tree
/
Copy pathini.xml
More file actions
525 lines (494 loc) · 22.6 KB
/
ini.xml
File metadata and controls
525 lines (494 loc) · 22.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 9ab074d32484672f93e5d822f42fb94ae9088207 Maintainer: hirokawa Status: ready -->
<!-- CREDITS: mumumu -->
<chapter xml:id="configuration" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>実行時設定</title>
<sect1 xml:id="configuration.file">
<title>設定ファイル</title>
<simpara>
設定ファイル (&php.ini;) は PHP の起動時に読み込まれます。
PHP のサーバーモジュール版では、Web サーバーの起動時に
一度だけ読み込まれます。<acronym>CGI</acronym> 版と
<acronym>CLI</acronym> 版では、スクリプトが呼び出される度に読み込まれます。
</simpara>
<para>
読み込む &php.ini; は、これらの場所を順に探します。
<itemizedlist>
<listitem>
<simpara>
SAPI モジュール特有の場所 (Apache 2 における
<literal>PHPIniDir</literal> ディレクティブ、
CGI/CLI 版における <literal>-c</literal> コマンドラインオプション)
</simpara>
</listitem>
<listitem>
<simpara>
<varname>PHPRC</varname> 環境変数。
</simpara>
</listitem>
<listitem>
<simpara>
PHP のバージョンごとに別の場所の <literal>php.ini</literal>
を使用することができます。レジストリキーの root は、
インストールされたOS や PHP が 32bit や 64bit どちらのビルドかによって変わります。
32bit OS 上の 32bit ビルドの PHP、
もしくは 64bit OS 上の 64bit ビルドの PHP は
<literal>[(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]</literal> を使いますが、
64bit OS 上での 32bit ビルドのPHPは、
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]</literal>] を代わりに使います。
ビルドのbit数がOSと同じPHPのインストールの場合、
以下のレジストリキーを順に調べて使用します。
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]</literal>、
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]</literal> および
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]</literal>。
x、y および z はそれぞれ PHP のメジャーバージョン、マイナーバージョン、
リリース番号を表します。
64bit OS の 32bitビルドの PHP では、
以下のレジストリキーを順に調べて使用します。
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]</literal>,
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]</literal> および
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]</literal>
x、y および z はそれぞれ PHP のメジャーバージョン、マイナーバージョン、
リリース番号を表します。
これらのキーに <literal>IniFilePath</literal>
の値が設定されていれば、最初に見つかった場所の <literal>php.ini</literal>
を使用します (Windows のみ)。
</simpara>
</listitem>
<listitem>
<simpara>
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]</literal> または
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]</literal> にある
<literal>IniFilePath</literal> の値 (Windows のみ)。
</simpara>
</listitem>
<listitem>
<para>
現在の作業ディレクトリ (CLI を除く)
</para>
</listitem>
<listitem>
<simpara>
Web サーバーのディレクトリ (SAPI モジュールの場合)、
もしくは PHP ディレクトリ (そうでない Windows の場合)
</simpara>
</listitem>
<listitem>
<simpara>
Windows ディレクトリ (<filename class="directory">C:\windows</filename>
もしくは <filename class="directory">C:\winnt</filename>))
(Windows の場合) 、もしくはコンパイル時のオプション
<literal>--with-config-file-path</literal>
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
<filename>php-SAPI.ini</filename> (ここで SAPI は使用する SAPI 名。
たとえば <filename>php-cli.ini</filename> や <filename>php-apache.ini</filename>)
が存在する場合、
&php.ini; の代わりに使用されます。
SAPI 名は <function>php_sapi_name</function> によって決定されます。
</para>
<note>
<para>
Apache web サーバーは、スタート時にディレクトリをルート
に変更するので、ファイルシステムのルートに &php.ini;
が存在する場合、PHP はそれを読もうとします。
</para>
</note>
<simpara>
&php.ini; の中で環境変数を参照するには、次のようにします。
PHP 8.3.0 以降では、参照する変数が未定義の場合にフォールバックする値を
指定できるようになりました。
</simpara>
<example>
<title>&php.ini; での環境変数</title>
<programlisting role="ini">
<![CDATA[
; 環境変数 PHP_MEMORY_LIMIT を利用します
memory_limit = ${PHP_MEMORY_LIMIT}
; 環境変数 PHP_MAX_EXECUTION_TIME が未定義の場合、30 にフォールバックします
max_execution_time = ${PHP_MAX_EXECUTION_TIME:-30}
]]>
</programlisting>
</example>
<para>
拡張モジュールに対する &php.ini; ディレクティブは、
各拡張モジュールのドキュメントで解説されています。
<link linkend="ini">コア ディレクティブ</link>
(PHP 本体に対するディレクティブ)のリストは付録にまとめられています。
ただし、(更新の都合上)すべての PHP ディレクティブが
本マニュアル中で解説されている訳ではありません。
使っているバージョンの PHP で指定可能なすべてのディレクティブについては、
&php.ini; ファイル内に詳細なコメントが記されていますので、参照ください。
もしくは、Git から入手可能な <link xlink:href="&url.php.git.phpini;">
最新の &php.ini;</link> も有用でしょう。
</para>
<para>
<example>
<title>&php.ini; の例</title>
<programlisting role="ini">
<![CDATA[
; 引用符をつけないセミコロン(;)の後のテキストは、すべて無視されます
[php] ; セクションマーカ (角括弧の中のテキスト) は無視されます
; 論理値は、次のいずれかで指定します
; true, on, yes
; または false, off, no, none
register_globals = off
magic_quotes_gpc = yes
; 文字列を二重引用符で括ることも可能です
include_path = ".:/usr/local/lib/php"
; バックスラッシュは他の文字と同様に処理されます
include_path = ".;c:\php\lib"
]]>
</programlisting>
<!-- TODO: add more details about values and expressions -->
</example>
</para>
<para>
ini ファイル内で既存の ini 変数を参照することが可能です。
例: <literal>open_basedir = ${open_basedir}
":/new/dir"</literal>
</para>
<sect2 xml:id="configuration.file.scan">
<title>スキャンディレクトリ</title>
<para>
PHP の設定で、&php.ini; を読んだ後に .ini ファイルを探すディレクトリを指定できます。
これは、コンパイル時のオプション
<option role="configure">--with-config-file-scan-dir</option> で設定します。
このスキャンディレクトリは実行時に上書きできます。
環境変数 <varname>PHP_INI_SCAN_DIR</varname> で指定します。
</para>
<para>
複数のディレクトリを指定するには、各プラットフォームのパス区切り文字
(Window や NetWare そして RISC OS の場合は <literal>;</literal>、
その他のプラットフォームの場合は <literal>:</literal>。PHP が用いる値は定数
<constant>PATH_SEPARATOR</constant> で取得できます)
を用います。<varname>PHP_INI_SCAN_DIR</varname> に空文字列が指定された場合は、
PHP のコンパイル時に
<option role="configure">--with-config-file-scan-dir</option>
で指定されたディレクトリもスキャンします。
</para>
<para>
指定されたディレクトリの中にあるファイルの中で、ファイル名が
<literal>.ini</literal> で終わるすべてのファイルを、アルファベット順にスキャンします。
読み込まれたファイルの一覧とその順序を調べるには、
<function>php_ini_scanned_files</function> を呼ぶか、あるいは
<option>--ini</option> オプションつきで PHP を実行します。
</para>
<informalexample>
<screen>
<![CDATA[
PHP のコンパイル時に --with-config-file-scan-dir=/etc/php.d
を指定しており、パス区切り文字が : であるものとします
$ php
PHP は /etc/php.d/*.ini を設定ファイルとして読み込みます。
$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php
PHP は /usr/local/etc/php.d/*.ini を設定ファイルとして読み込みます。
$ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php
PHP はまず /etc/php.d/*.ini を設定ファイルとして読み込み、
続いて /usr/local/etc/php.d/*.ini も設定ファイルとして読み込みます。
$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php
PHP はまず /usr/local/etc/php.d/*.ini を設定ファイルとして読み込み、
続いて /etc/php.d/*.ini を設定ファイルとして読み込みます。
]]>
</screen>
</informalexample>
</sect2>
</sect1>
<sect1 xml:id="configuration.file.per-user">
<title>.user.ini ファイル</title>
<simpara>
PHP はディレクトリ単位での
INI ファイルをサポートしています。
このファイルは、CGI/FastCGI SAPI の場合にのみ処理されます。
この機能は、PECL htscanner 拡張モジュールを置き換えるものです。
Apache モジュールとして PHP を実行している場合は &htaccess; ファイルを使えば同じ機能を実現できます。
</simpara>
<simpara>
メイン &php.ini; ファイルに加えて、PHP が各ディレクトリの INI ファイルをスキャンします。
リクエストされた PHP ファイルがあるディレクトリから始まり、
現在のドキュメントルート (<varname>$_SERVER['DOCUMENT_ROOT']</varname>)
まで順にたどっていきます。PHP ファイルがドキュメントルート配下以外の場所にある場合は、
PHP ファイルがあるディレクトリだけをスキャンします。
</simpara>
<simpara>
.user.ini 形式の INI ファイルがサポートするのは、
モードが <constant>INI_PERDIR</constant> および
<constant>INI_USER</constant> の項目のみです。
</simpara>
<simpara>
ふたつの新しい INI ディレクティブ
<link linkend="ini.user-ini.filename">user_ini.filename</link> および
<link linkend="ini.user-ini.cache-ttl">user_ini.cache_ttl</link>
で、ユーザー INI ファイルの使用法を制御します。
</simpara>
<simpara>
<link linkend="ini.user-ini.filename">user_ini.filename</link>
は、PHP が各ディレクトリで探すファイルの名前を設定します。
空文字列を指定した場合は何も探しません。デフォルトは
<literal>.user.ini</literal> です。
</simpara>
<simpara>
<link linkend="ini.user-ini.cache-ttl">user_ini.cache_ttl</link>
は、ユーザー INI ファイルの再読込頻度を設定します。
デフォルトは 300 秒 (5 分) です。
</simpara>
</sect1>
<sect1 xml:id="configuration.changes.modes">
<title>どこで設定を行うのか</title>
<para>
これらのモードは、ある PHP ディレクティブがいつどこで設定できるのかを表すものです。
マニュアルに記載されているすべてのディレクティブには、これらのモードのいずれかが指定されています。
たとえば、PHP スクリプト中で <function>ini_set</function>
で設定できるものもあれば &php.ini; や &httpd.conf;
でなければ設定できないものもあります。
</para>
<para>
たとえば <link linkend="ini.output-buffering">output_buffering</link> は
<constant>INI_PERDIR</constant> なので、
<function>ini_set</function> で設定することはできません。
一方 <link linkend="ini.display-errors">display_errors</link> は
<constant>INI_ALL</constant> なのでどこででも設定でき、当然
<function>ini_set</function> ででも設定できます。
</para>
<para>
<variablelist>
<!--
Replace everything inside the <variablelist> element with an <xi:include>
once libxml2 gets XInclude 1.1 attribute copying support.
The below <xi:include> will include the appropriate elements
but needs all top-level xml:id's removed (see XInclude 1.1 set-xml-id).
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('constant.ini-mode')/*)"><xi:fallback/></xi:include>
-->
<title>INI モードの定数</title>
<varlistentry>
<term>
<constant>INI_USER</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
エントリはユーザー定義のスクリプト(<function xmlns="http://docbook.org/ns/docbook">ini_set</function>)
や <link xmlns="http://docbook.org/ns/docbook" linkend="configuration.changes.windows">Windows レジストリ</link> を使って) で設定できます。
&user-ini; でも設定できます
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
<constant>INI_PERDIR</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
エントリは &php.ini;, &htaccess;, &httpd.conf;, &user-ini; で設定できます
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
<constant>INI_SYSTEM</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
エントリは &php.ini; または &httpd.conf; で設定できます
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
<constant>INI_ALL</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
エントリはどこでも設定できます
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect1>
<sect1 xml:id="configuration.changes">
<title>設定を変更するには</title>
<sect2 xml:id="configuration.changes.apache">
<title>Apache モジュールとして PHP を実行している場合</title>
<simpara>
PHP を Apache モジュールとして使用している場合、Apache 設定ファイル (例、&httpd.conf;)
もしくは &htaccess; ファイルにディレクティブを記述することで、PHP の設定の変更を行うことが
可能です。このようにして設定変更を行うには、"AllowOverride Options" もしくは
"AllowOverride All" 権限が必要です。
</simpara>
<para>
Apache 設定ファイルから PHP の設定を変更するには、
以下に示す Apache ディレクティブを使用します。
各設定オプションの変更の可否 (<constant>INI_ALL</constant>,
<constant>INI_PERDIR</constant>, または <constant>INI_SYSTEM</constant>)
については、付録
<link linkend="ini.list">php.ini ディレクティブのリスト</link>
を参照ください。
</para>
<para>
<variablelist>
<varlistentry>
<term>
<systemitem role="directive">php_value</systemitem>
<parameter>name</parameter>
<parameter>value</parameter>
</term>
<listitem>
<para>
指定した設定オプションに値を設定します。変更の可否が、
<constant>INI_ALL</constant> もしくは
<constant>INI_PERDIR</constant> である設定オプションに対し利用できます。
セット済みの値をクリアしたい場合は、<literal>none</literal> を
値として使用してください。
</para>
<note>
<simpara>
論理値を設定する場合には <systemitem role="directive">php_value</systemitem>
を使用しないでください。代わりに、<systemitem role="directive">php_flag</systemitem>
(下記参照)を使用する必要があります。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>
<systemitem role="directive">php_flag</systemitem>
<parameter>name</parameter>
<parameter>on|off</parameter>
</term>
<listitem>
<para>
設定オプションに論理値を設定するために使用します。変更の可否が、
<constant>INI_ALL</constant> もしくは
<constant>INI_PERDIR</constant> である設定オプションで利用できます。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<systemitem role="directive">php_admin_value</systemitem>
<parameter>name</parameter>
<parameter>value</parameter>
</term>
<listitem>
<para>
指定した設定オプションに値を設定します。このディレクティブは、&htaccess;
ファイルでは利用できません。また、
<systemitem role="directive">php_admin_value</systemitem>
で設定された設定オプションの値は、&htaccess;
や <function>ini_set</function> では上書きできません。
セット済みの値をクリアしたい場合は、<literal>none</literal>
を値として使用してください。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<systemitem role="directive">php_admin_flag</systemitem>
<parameter>name</parameter>
<parameter>on|off</parameter>
</term>
<listitem>
<para>
設定オプションに論理値を設定するために使用します。
このディレクティブは、&htaccess; ファイルでは利用できません。
php_admin_value で設定された設定オプションの値は、&htaccess;
や <function>ini_set</function> では上書きできません。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
<example>
<title>Apache 設定の例</title>
<programlisting role="ini">
<![CDATA[
<IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag engine on
</IfModule>
<IfModule mod_php4.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag engine on
</IfModule>
]]>
</programlisting>
</example>
</para>
<caution>
<para>
PHP 定数は PHP 以外では使用できません。たとえば、
<filename>httpd.conf</filename> の中で
<link linkend="ini.error-reporting">error_reporting</link>
オプションを設定しようとして <constant>E_ALL</constant>
や <constant>E_NOTICE</constant> のような PHP 定数を使用することは
できません。これらは意味を有さないため、
<emphasis>0</emphasis> と評価されてしまいます。
代わりに、対応するビットマスク値を使用してください。
&php.ini; の中では、これらの PHP 定数を使用することができます。
</para>
</caution>
</sect2>
<sect2 xml:id="configuration.changes.windows">
<title>Windows レジストリによる PHP の設定の変更</title>
<simpara>
Windows 上で PHP を実行している場合、Windows レジストリを使用して設定値を
ディレクトリ毎に変更することができます。
設定値は、レジストリキー <literal>HKLM\SOFTWARE\PHP\Per Directory Values</literal>
に保存され、そのサブキーがパス名となります。例えば、ディレクトリ
<literal>c:\inetpub\wwwroot</literal> に対する設定値は、 キー
<literal>HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot</literal>
に保存されます。ディレクトリに対する設定は、そのディレクトリ、
およびそのサブディレクトリで実行されるすべてのスクリプトで有効となります。
PHP 設定オプションのディレクティブを名前とする文字列値をキーに登録してください。
また、値のデータに PHP 定数を記述しても解釈されませんので、注意してください。
しかし、<constant>INI_USER</constant>
で変更可能な設定値はこの方法で設定することが可能ですが、
<constant>INI_PERDIR</constant> である設定値は設定できません。
なぜなら、これらの設定値はリクエストがあるたびに読み直されるからです。
</simpara>
</sect2>
<sect2 xml:id="configuration.changes.other">
<title>他の方法</title>
<para>
どのように PHP を実行しているかに係わらず、<function>ini_set</function> 関数を
用いて、スクリプトの実行時に一部のオプションの設定値を変更することができます。詳細は、
<function>ini_set</function> 関数のリファレンスを参照ください。
</para>
<para>
使用しているシステムにおける現在のオプション設定値の完全なリストを得たい場合は、
<function>phpinfo</function> 関数を実行し、出力された結果を参照ください。
また、<function>ini_get</function> 関数または <function>get_cfg_var</function>
関数を用いて、個々のオプションの設定値にアクセスすることも可能です。
</para>
</sect2>
</sect1>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->