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_filesize | 1ファイル当たりの最大アップロードサイズ ※指定サイズ単位:m=メガ、G=ギガ | 100m | 2M |
post_max_size | POSTデータの最大サイズ ※1回のアップロードファイルすべての合計サイズ ※指定サイズ単位:m=メガ、G=ギガ | 500m | 8M |
max_execution_time | スクリプトの最大実行時間 ※単位は秒、-1=制限なし | 300 | 30 |
max_input_time | ファイルのアップロード時間 ※単位は秒、-1=制限なし | 300 | 60 |
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を超えるファイルのアップロードができました。
方法3 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' );
この方法では私の環境ではうまく動作しなかったです。