WordPressで画像をアップロードした際にアップロードサイズを超えたエラーの対処方法

最終更新日

WordPressでファイルサイズが大きい画像をアップロードした際に、「このファイルはサイトの最大アップロードサイズを超えています。」というメッセージが表示された際の対処方法を記載。

エラー内容

最大アップロードサイズを超えたエラー画像

wordpressを使用していると上記エラーメッセージが表示されアップロードできなかった。

メディアからアップロードを試みた。

wordpress最大アップロードサイズ上限画像

メディアでアップロードしようとした時、最大アップロードサイズは2MBとなっている。

php.iniのアップロードの上限設定が2Mと設定されているために発生していた。この原因は、phpの設定にあります。

方法1 .Htaccessにアップロード制限サイズを記述する方法

.Htaccessに以下のコードを追加することにより、アップロードサイズ制限を変更することができます。

php_value upload_max_filesize 50m
php_value post_max_size 500m
php_value max_execution_time 300
php_value max_input_time 300

WP Htaccess File Editorプラグインをインストールすることで、管理者画面から変更することができます。詳しくは以下のブログを参照

方法2 php.iniの設定

php.iniはWebサイト全体に対しての設定値です。通常はサーバー管理者が設定を決めていることが多いです。また、php.iniの設定変更はWebサーバーのプロセス再起動が必要になります。

php.iniの場所:/etc/php.ini

※サーバーによっては、格納場所が異なるケースがあります。

 ; Maximum allowed size for uploaded files.
 ; http://php.net/upload-max-filesize
 upload_max_filesize = 2M

 ; Maximum size of POST data that PHP will accept.
 ; Its value may be 0 to disable the limit. It is ignored if POST data reading
 ; is disabled through enable_post_data_reading.
 ; http://php.net/post-max-size
 post_max_size = 8M

 ; Maximum amount of time each script may spend parsing request data. It's a good
 ; idea to limit this time on productions servers in order to eliminate unexpectedly
 ; long running scripts.
 ; Note: This directive is hardcoded to -1 for the CLI SAPI
 ; Default Value: -1 (Unlimited)
 ; Development Value: 60 (60 seconds)
 ; Production Value: 60 (60 seconds)
 ; http://php.net/max-input-time
 max_input_time = 30

 ; Maximum execution time of each script, in seconds
 ; http://php.net/max-execution-time
 ; Note: This directive is hardcoded to 0 for the CLI SAPI
 max_execution_time = 60
デフォルト
upload_max_filesize1ファイル当たりの最大アップロードサイズ
※指定サイズ単位:m=メガ、G=ギガ
100m2M
post_max_sizePOSTデータの最大サイズ
※1回のアップロードファイルすべての合計サイズ
※指定サイズ単位:m=メガ、G=ギガ
500m8M
max_execution_timeスクリプトの最大実行時間
※単位は秒、-1=制限なし
30030
max_input_timeファイルのアップロード時間
※単位は秒、-1=制限なし
30060

max_execution_timeとmax_input_timeについては、アップロード時間が長くなりエラーになるようであればチューニングしましょう。

upload_max_filesize、post_max_sizeもあまり大きな値を指定してしまうと、どんなサイズでもアップロードできてしまうので、50M、100M、300Mなど必要な分上げていくと良いでしょう。大きなファイルのアップロードは、サーバー側のネットワーク帯域を長く占有する可能性もあるので、ユーザー側サイトが重くなったりします。予防する意味であまり大きな値は入れない方がよいでしょう。

設定した結果

 ; Maximum allowed size for uploaded files.
 ; http://php.net/upload-max-filesize
 upload_max_filesize = 100M

 ; Maximum size of POST data that PHP will accept.
 ; Its value may be 0 to disable the limit. It is ignored if POST data reading
 ; is disabled through enable_post_data_reading.
 ; http://php.net/post-max-size
 post_max_size = 100M

 ; Maximum amount of time each script may spend parsing request data. It's a good
 ; idea to limit this time on productions servers in order to eliminate unexpectedly
 ; long running scripts.
 ; Note: This directive is hardcoded to -1 for the CLI SAPI
 ; Default Value: -1 (Unlimited)
 ; Development Value: 60 (60 seconds)
 ; Production Value: 60 (60 seconds)
 ; http://php.net/max-input-time
 max_input_time = 300

 ; Maximum execution time of each script, in seconds
 ; http://php.net/max-execution-time
 ; Note: This directive is hardcoded to 0 for the CLI SAPI
 max_execution_time = 300

2Mを超えるファイルのアップロードができました。

wordpress最大アップロードサイズ上限画像

方法3 functions.phpファイルの編集

functions.php変更

functions.phpファイルに以下のソースを追記する。

@ini_set( 'upload_max_size' , '50m' );
@ini_set( 'post_max_size', '500m');
@ini_set( 'max_execution_time', '300' );
@ini_set( 'max_input_time ', '300' );

この方法では私の環境ではうまく動作しなかったです。