.htaccess での upload_max_filesize や php.ini での upload_tmp_dir 、ini_set() 関数での memory_limit の指定など、それぞれの PHP ディレクティブには設定方法が規定されており、モードと呼ばれるカテゴリーで分類され、それぞれのモードで設定可能な方法が定められている。
モードには以下の種類がある。
モード | 意味 |
---|---|
PHP_INI_USER | ユーザースクリプト(ini_set()関数など)または Windows レジストリで設定可能なエントリ。 .user.ini でも設定可能。 |
PHP_INI_PERDIR | php.ini、.htaccess、httpd.conf あるいは .user.ini で設定可能なエントリ。 |
PHP_INI_SYSTEM | php.ini または httpd.conf で設定可能なエントリ。 |
PHP_INI_ALL | どこでも設定可能なエントリ。 |
Webサーバー(Apache、IIS)により使用できる設定ファイルが異なるが、設定ファイルには以下の種類がある。
設定ファイル | 区分 | 影響範囲 | 備考 |
---|---|---|---|
php.ini | PHP | 全体 | |
httpd.conf | Apache | 全体 | |
.htaccess | Apache | ディレクトリ単位 | |
web.config | IIS | ディレクトリ単位 | |
.user.ini | PHP | ディレクトリ単位 | PHP 5.3.0 以降 |
ini_set() | PHP | スクリプトレベル |
個人的に IIS サーバーを触ったことがないため、調べるまで知らなかったのだが、IIS サーバーには .htaccess がないため、web.config ファイルを使用する必要があることに注意する。
例えば PHP_INI_PERDIR モードのディレクティブを変更する場合
https://qiita.com/naente/items/0d22b45a3c6e2ecfcd33
よくある Apache サーバの場合は .htaccess や httpd.conf を使用できるが Windows 上で稼働している IIS サーバの場合は web.config を使用して設定を行う必要がある
または .user.ini を使用した PHP 側での変更も可能