[各レンタルサーバのphp.iniの設定] upload_max_filesizeの値を変更する

WordPressでテーマやプラグインのアップロードが失敗する場合、以下のようなメッセージが表示される場合があります。

アップロードしたファイルは php.ini で定義された upload_max_filesize を超過しています。

言葉の通り、php.iniで定義されてるアップロード可能なファイルサイズの上限を超えているというメッセージです。これを解決するにはWordPressではなくレンタルサーバー側で設定します。

php.iniの設定はサーバー会社によってまちまちです。以下のような編集方法が一般的です。

  • php.iniを直接編集
  • .htaccessで編集
  • httpd.confで編集
  • サーバー管理画面から編集

中にはphp.iniの編集を禁止しているレンタルサーバーもあります。

私が利用しているサーバーでのphp.ini編集方法のまとめです。

エックスサーバーの場合

エックスサーバーではサーバーコントロールパネル内でphp.iniが編集することができます。

エックスサーバーのサーバーパネルにログイン後、中央下にある「php.ini設定」から入ります。

エックスサーバー管理画面

php.iniを編集したいドメインを選択します。

ドメインの選択

「php.ini設定変更」タブの「その他の設定」の中にある、
post_max_size
upload_max_filesize
の部分です。

必要に応じてmemory_limitの値も変更します。

php.ini設定編集

しかし、エックスサーバーでは初期状態で30Mに設定されているのでこのままで問題ないかと思います。

そのほか、エックスサーバー管理画面上で、php.iniを直接編集することも可能です。

php.ini直接編集

値を変更して何か不都合が起きたりした場合は、php.iniの値を初期状態に戻すこともできます。

php.iniの値を初期状態に戻す

エックスサーバーではブラウザで操作ができるので初心者でも安心です。

CPIの共用サーバーACE01の場合

CPIシェアードプランは契約時期によってサーバーの仕様が異なるようです。

PHP 5.5.16以降のバージョンではmbstring.internal_encodingの値(デフォルトの文字コード)はUTF-8ですが、それ以前はEUC-JPです。

シェアードプランACE01ではPHPは複数バージョンが用意されていますが、バージョンを指定してPHPを動かしたい場合は.htaccessに記述する必要があります。

PHPバージョンの指定方法は以下の記事にて

シェアードプランACE01ではファイルアップロードサイズの上限の初期値は2MBのようです。

この値を変更するにはphp.iniを作成してドキュメントルートに設置します。ACE01のドキュメントルートはhtmlなのでhtml直下に設置します。

CPIの場合、php.iniを設置しただけではサイト全体に設定は反映されません。.htaccessも編集が必要です。

弊社サーバーの PHP は php.ini ファイルがカレントディレクトリにある場合、その php.ini ファイルの設定を最優先で読み込みます。ただし下位ディレクトリに対しては効果は及びませんので、下位ディレクトリ全体に独自の php.ini ファイルを有効したい場合には .htaccess ファイルを利用するか、各ディレクトリに 1 つずつ php.ini ファイルを設置してください。

http://acesr.document.secure.ne.jp/tools/php/php01.html

またCPIではphp.iniに設定したい内容だけを記述するとPHPが正常に動作しないとマニュアルに記載があるため、ちょっと面倒ですがCPI標準のphp.iniファイルをウェブコントロールパネルからコピペします。

php.iniはPHPバージョンごとに用意されています。ファイルがある場所は

ウェブコントロールパネル > お客様情報 > プログラムのパスとサーバの情報

php.iniファイル

該当するPHPのバージョンをクリックすると設定情報が表示されるので、全てコピーしてテキストエディタに貼り付けます。

その設定ファイルの中で「post_max_size」と「upload_max_filesize」を探し値を変更します。

post_max_size = 32M
upload_max_filesize = 32M

ファイルをphp.iniとして保存しhtml直下にアップロードします。

.htaccessは、php.iniと同じ場所に設置し、php.iniのフルパスを記述します。

今回php.iniをhtmlディレクトリの直下に設置したので.htaccessには以下のように記述します。

suPHP_ConfigPath /usr/home/ユーザーID/html/

ユーザーIDはウェブコントロールパネルの公開用サイト設定を開くとサイドバーに記載されています。

※ドキュメントルートにphp.iniを設置するとブラウザから閲覧できてしまうので.htaccessで制限をかけましょう。

<Files ~ "\.ini">
deny from all
</Files>

さくらインターネットの場合

さくらのレンタルサーバーでphp.iniを編集する場合は、サーバーコントロールパネルから操作可能です。

サーバーメニューの「アプリケーションの設定」内にある「PHP設定の編集」にあります。

PHP設定の編集

デフォルトでは何も記載されていない状態です。

php.iniの編集画面

設定したい項目のみを記述していく形になります。

さくらphp.ini編集後

php.iniはwwwディレクトリの直下に生成されます。

ドメインごとにphp.iniを設定できるかどうか、マニュアルを確認しても見当たらなかったため、どうやら全ドメイン共通の設定になるようです。

コアサーバーの場合

CORESERVERではFastCGI版PHPとCGI版PHPがあり、標準ではFastCGI版PHPが提供されています。ここではFastCGI版PHPでの場合になります。

CORESERVERでもPHPはバージョンを選択して利用することができ、php.iniもバージョンごとに用意されています。

php.iniがある場所は、

/public_html/.fast-cgi-bin/

になります。

CORESERVER-phpiniファイルの場所

PHP7.2のphp.iniを編集したい場合は、このディレクトリの中にある

php72.ini

を編集します。

PHP7.2のphp.ini

編集する前にバックアップをとっておくと安心です。

しかしコアサーバーの場合、デフォルトの設定が

post_max_size = 1000M
upload_max_filesize = 1000M
memory_limit = 500M

とちょっと変わった設定になっています。ファイルのアップロード上限は問題ないのでそれ以外のPHP設定したい場合に編集することがあるかもしれません。

ドメインごとに.user.iniを設置する

上記の設定方法だと、サーバー全体に値が反映されるため全てのドメインに影響します。ドメイン、ディレクトリごとに設定したい場合は.user.iniで設定することもできます。

※php.iniの設定はすぐに反映されません、反映されるまでに5〜10分かかるようです。

GMOクラウド iClusta+の場合

アイクラスタプラスではphp.iniを設置します。以前かいてました。

以上、個人的に利用しているレンタルサーバーのphp.iniの設定についてのまとめでした。