.user.iniとは?書き方・設置場所・反映されない原因からdisplay_errorsの設定まで解説

.user.iniとは、PHPの設定をディレクトリ単位で変更できる設定ファイルです。共用レンタルサーバーのようにphp.ini本体を編集できない環境でも、メモリ上限やアップロードサイズ、エラー表示などを自分で調整できるため、WordPress運用者にとって特に重要なファイルとなっています。

この記事では、.user.iniの基本と書き方、設置場所ごとの効き方、反映されないときの原因チェック、display_errorsによるエラー表示の設定、そして安全に運用するための注意点まで、順を追ってわかりやすく解説します。

.user.iniとは?php.iniとの違いを基礎から解説

.user.iniとは、2009年6月30日にリリースされたPHP 5.3.0から導入された、ディレクトリ単位のPHP設定ファイルです。PHP公式マニュアルの「.user.ini ファイル」の項では、.htaccessスタイルのINIファイルをディレクトリごとに読み込む仕組みとして説明されています(引用元:PHP公式マニュアル「.user.ini ファイル」)。

サーバー全体に適用されるphp.iniに対して、.user.iniは「置いたディレクトリとその配下」だけに設定が効くのが最大の違いです。いわば「php.iniのミニ版を自分のフォルダに置ける仕組み」と考えるとイメージしやすいでしょう。

ただし重要な前提が1つあります。.user.iniが読み込まれるのはCGI版・FastCGI版のPHPだけで、Apacheのモジュール版(mod_php)では無視されます。国内の主要レンタルサーバーの多くはFastCGI方式のため利用できますが、自前のサーバーでmod_phpを使っている場合は.htaccessで設定するのが正解です。自分の環境のPHP動作方式を最初に確認しておくことが、この後のすべての作業の前提になります。

.user.iniの書き方:基本ルールとよく使う設定例

.user.iniの書き方は非常にシンプルで、php.iniと同じ「設定名 = 値」の形式を1行に1つずつ書いていくだけです。

書き方の基本ルール

  • ファイル名は必ずドットから始まる「.user.ini」にする
  • 1行につき1設定。「設定名 = 値」の形式で書く
  • セミコロン「;」で始まる行はコメントとして無視される
  • 文字コードはUTF-8、余計な装飾や全角スペースを入れない

よく使う設定例

実際のレンタルサーバーでよく書かれる代表的な設定は次のとおりです。

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 60

ここで注意したいのが、.user.iniにはすべての設定項目が書けるわけではないという点です。PHPの設定項目には変更可能な場所を示すモードがあり、.user.iniで有効なのはPHP_INI_PERDIRとPHP_INI_USERのモードを持つ項目だけです。extensionの追加などPHP_INI_SYSTEM専用の項目は書いても無効になります。また、post_max_sizeはupload_max_filesize以上の値にするのが基本で、この大小関係を逆にするとアップロード上限が意図どおりに増えません。

.user.iniの設置場所:どこに置けばどこまで効くのか

.user.iniの設置場所は、「設定を効かせたい範囲」で決まります。PHPは、実行されるPHPファイルがあるディレクトリから、ドキュメントルートまでさかのぼりながら.user.iniを探して読み込みます。

具体的には次のような使い分けになります。

  • サイト全体に効かせたい → ドキュメントルート直下(public_htmlなど)に置く
  • 特定のアプリだけに効かせたい → そのアプリのディレクトリ(例:blogフォルダ)に置く

迷ったらドキュメントルート直下に1つだけ置くのが管理しやすくおすすめです。複数の階層に置いた場合はそれぞれの場所で読み込まれるため、どこで何を設定したのか分からなくなりがちです。

また、ドキュメントルートより上の階層に置いても読み込まれない点にも注意してください。探索はドキュメントルートで打ち切られるため、その外側は対象外です。WordPressの場合は、wp-login.phpやwp-admin配下にも効かせるため、WordPress本体と同じディレクトリに置くのが定番の配置です。

.user.iniが反映されないときに確認したい5つの原因

「.user.iniを書いたのに設定が変わらない」というトラブルには、定番の原因があります。上から順に確認していけば、ほとんどのケースは解決できます。

  • キャッシュの待ち時間:.user.iniの読み込み結果は user_ini.cache_ttl の設定時間だけキャッシュされる。既定値は300秒のため、反映まで最大5分待つ必要がある
  • PHPの動作方式:mod_php(Apacheモジュール版)では.user.iniは読み込まれない
  • 設定項目のモード:PHP_INI_SYSTEM専用の項目は.user.iniでは変更できない
  • ファイル名・場所の間違い:「user.ini」(先頭のドット忘れ)や、実行ファイルより上の無関係な階層への設置
  • サーバー側の独自制限:一部のホスティングでは.user.iniの利用や特定項目の変更が制限されている

この中でもっとも見落とされやすいのが、最初のキャッシュです。「書き直しては即リロード」を繰り返して「効いていない」と判断してしまう失敗は非常に多く、設定変更後は5分待ってからphpinfoで確認するのが確実な手順です。phpinfo関数の出力では、実際に読み込まれた設定値をローカル値として確認できます。

.user.iniでdisplay_errorsを設定してエラーを表示する方法

画面が真っ白になって原因が分からないとき、.user.iniでdisplay_errorsを有効にすると、エラー内容を画面に表示させて原因を特定できます。display_errorsはPHP_INI_ALLモードの項目なので、.user.iniから問題なく変更できます。

display_errors = On
error_reporting = E_ALL

この2行を追加して5分ほど待ってからページを再読み込みすると、エラーメッセージがファイル名・行番号つきで表示されます。エラーの発生場所が分かるだけで、調査時間は大幅に短縮できます。

ただし、使い方には明確な注意点があります。本番公開中のサイトでdisplay_errorsをOnのままにしないでください。エラーメッセージにはファイルパスやデータベース関連の情報が含まれることがあり、攻撃者へのヒントになります。原因調査が終わったらOffに戻し、本番ではlog_errorsとerror_logでログファイルに記録する運用に切り替えるのが安全です。

レンタルサーバーでの.user.iniの使い方:エックスサーバーを例に

国内の共用レンタルサーバーの多くはFastCGI方式でPHPを動かしているため、.user.iniが実際の設定手段として広く使われています。

たとえばエックスサーバーでは、WordPressをインストールしたディレクトリに.user.iniが設置される構成が採られており、メモリ上限などの初期設定がこのファイルで管理されています。また、サーバーパネルの「php.ini設定」から項目を変更できる仕組みも用意されているため、ファイルを直接編集する方法と管理画面から変更する方法の2通りがあることを覚えておくと混乱しません。

他社のレンタルサーバーでも考え方は同じですが、設定ファイルの名前や編集手段はサーバー会社ごとに異なるため、契約中のサーバーの公式マニュアルで「PHPの設定変更」のページを確認するのが確実です。

なお、管理画面とファイル編集の両方で同じ項目を変更した場合、どちらが優先されるかはサーバーの実装によります。変更後は必ずphpinfoで実際の値を確認する習慣をつけておくと、思い込みによるトラブルを防げます。

.user.iniを安全に運用するためのセキュリティ対策

.user.iniは便利な反面、セキュリティ面の配慮が必要なファイルでもあります。運用時には次の2点を押さえておきましょう。

外部からファイルを見られないようにする

.user.iniはただのテキストファイルなので、対策をしないとブラウザからURL直打ちで中身を読まれてしまう場合があります。設定内容はサーバー構成のヒントになるため、Webサーバー側で.user.iniへのアクセスを拒否しておくのが基本です。多くのレンタルサーバーではあらかじめアクセス拒否が構成されていますが、自分の環境で.user.iniのURLに直接アクセスしてみて、403エラーなどで拒否されるかを一度確認しておくと安心です。

改ざんされていないか定期的に確認する

もう1つ知っておきたいのが、.user.iniはマルウェアの標的にもなるという事実です。サイト改ざん攻撃では、auto_prepend_fileという設定を.user.iniに書き込み、すべてのPHP実行時に不正なファイルを読み込ませる手口が実際に確認されています。

身に覚えのない.user.iniが増えていないか、中身に見知らぬ設定が追加されていないかを定期的に確認し、ファイルのパーミッションは604や600など必要最小限に絞っておくことをおすすめします。設定ファイルを自分の管理下に置き続けることが、.user.ini活用の最後の仕上げです。