.htaccessに「php_value memory_limit 16M」のような記述があると、「500 Internal Server Error」が発生し、「Invalid command ‘php_value’, perhaps misspelled or defined by a module not included in the server configuration」のようなエラーログが出ることがある。

これはほとんどの場合、PHPがモジュール版からFastCGIに変更した場合に発生する事象である。

対応としては、実行されるPHPと同じディレクトリに.user.iniといったファイルを設置する。
ファイル名はphp.iniで「user_ini.filename = “~”」で定義されている名称を使用する。
なお、空文字「user_ini.filename = “”」になっていると無効となる。

; .user.ini は php.ini の一部設定のみを記述可能(設定値が INI_PERDIR および INI_USER の項目のみ)
memory_limit = 16M
: 指定の値が2の累乗の場合、玄人っぽく見える

.user.ini は即座には反映されず、キャッシュされることに留意する。
キャッシュの時間(TTL – Time to Live)はphp.iniの「user_ini.cache_ttl = ~」に定義されている。

また、.htaccessでは以下のようにアクセス禁止にしておく。

<Files ".user.ini">
Order deny,allow
Deny from all
</Files>

ちなみにPHPコードでは、この設定値を変えることはできない。
よく以下のようなコード例が見られるが、ini_set() 関数は設定値がPHP_INI_ALLであるPHPディレクティブにしか使用できない。

<?php
@ini_set( 'memory_limit' , '16M' );
@ini_set( 'upload_max_size' , '16M' );

このコードでは「memory_limit」は「PHP_INI_ALL」であるが、「upload_max_size」は「PHP_INI_PERDIR」に属するため、php.ini、.htaccess、http.conf、.user.iniでしか変更できない。