6
7

More than 3 years have passed since last update.

PHPでpost_max_sizeやupload_max_filesizeの設定がini_set()で反映されない場合

Last updated at Posted at 2019-12-22

サーバー上でPHPを利用していると、PHPの設定をphp.iniを書き換えることなく、
特定のファイルや、ディレクトリないだけで変更したい場合がたまにあります。

つい先日も、自作のPHPファイルだけで有効になるよう、
post_max_sizeupload_max_filesizeの値をini_setで値を変更したところ、値が反映されていない・・

php_info()で設定値を確認しても、やっぱり変わっていなかったので、
ちょっと調べたところPHPマニュアルにがっつり書いていました。

PHPの各ディレクティブ(設定値)は、そのディレクティブのモードによって、
何処で設定出来るかが決まっているそうです。
PHPディレクティブとモードの一覧はこちら

post_max_sizeupload_max_filesizeは、
モードがPHP_INI_PERDIRだったので、ini_setでの設定変更が不可だったようです。

以下はそのモードについて。

PHP_INI_USER

PHPマニュアルを確認しても該当するディレクティブがないため気にしなくて良さそうなモード
PHP5以前は使われていたらしく、以下の3つのみ設定変更可能なモード
・自作のphpファイルないでini_setコマンドを使って設定変更
Windowsレジストリから設定変更
・.user.iniから設定変更(PHP5.3以降の場合)

PHP_INI_PERDIR

php.ini、.htaccess、httpd.conf、.user.iniでのみ設定変更

PHP_INI_SYSTEM

php.ini、httpd.confでのみ設定変更可能

PHP_INI_ALL

自作PHPファイルでini_set、.user.ini、.htaccess、php.ini、httpd.confのどれでもも設定可能

今回の場合、post_max_sizeupload_max_filesizeを変更するようの
.htaccessを作成して、自作PHPファイルが格納されているディレクトリに配置したところ、
そのディレクトリだけ設定が反映されてることが確認できました。

まとめ

昔、同じ理由で変更出来なかった事をすっかり忘れて、またハマってしまったため、
自分への戒めとして記事に残しときます。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7