そもそもディレクティブとは
コンパイル時にコンパイラーに与える補足情報
phpのディレクティブとは
PHPの動作や挙動を制御するための設定項目
php.ini
などの設定ファイルに記述され、PHP本体や拡張モジュールの動作パラメータを指定・調整ができる。
ディレクティブは、メモリ使用量やエラーレポートの挙動、拡張モジュールの有効化ができる。
動作のカスタマイズ: PHP環境全体や特定のスクリプト・ディレクトリ単位での挙動を変更することができる
どのようなことができるのか
- 各種PHP設定値(
memory_limit
,display_errors
,include_path
など)の指定 - 拡張モジュールごとの設定変更
- サーバー設定(Apacheのphp_value/php_flagなど)を通じたディレクトリ単位や仮想ホスト単位での動作調整
- スクリプト内で ini_set() 関数を用いた動的な設定変更
ディレクティブの設定場所と変更方法
最初に読み込まれるのは主設定ファイル php.ini
で、PHP起動時に読み込まれてから、スキャンディレクトリ内の拡張設定ファイル(.ini
ファイル)や各ディレクトリの .user.ini
を読み込んで設定を上書き・追加できるようになる。
Apache設定ファイルや.htaccess
Apacheモジュールとして動作する場合、.htaccess
や httpd.conf
を用いてPHP設定を変更可能。具体的には php_value
, php_flag
, php_admin_value
, php_admin_flag
などのディレクティブを使用。
ディレクティブの種類と変更可能な範囲
ディレクティブには、それぞれ設定可能な範囲やタイミングが定められていて、「INIモード
」と呼ばれ、以下のように分類分けされる
- INI_USER: スクリプト内(ini_set())やユーザー定義ファイル(.user.ini)で変更可能
- INI_PERDIR: php.ini、.htaccess、httpd.conf、.user.ini などで設定可能
- INI_SYSTEM: システム全体の設定ファイル(php.ini、httpd.conf)でのみ設定可能
- INI_ALL: どこからでも変更可能(スクリプト内も含む)
参考
https://www.php.net/manual/ja/configuration.php
https://www.php.net/manual/ja/configuration.file.php
https://www.php.net/manual/ja/configuration.file.per-user.php
https://www.php.net/manual/ja/configuration.changes.modes.php
https://www.php.net/manual/ja/configuration.changes.php