如果在 WordPress 架設的網站上傳大型檔案時遇到錯誤,可以參考這裡的步驟教學來解決。

一般使用 WordPress 所架設的網站,在預設的設定之下是沒有辦法上傳太大型的檔案的,我們可以在「上傳新媒體檔案」的頁面看到目前網站設定的最大上傳檔案大小。


how-to-increase-the-maximum-file-upload-size-in-wordpress-1

WordPress 上傳檔案大小限制

如果上傳的檔案大小超過限制,就會出現這樣的錯誤訊息:

how-to-increase-the-maximum-file-upload-size-in-wordpress-2

WordPress 超越此站檔案大小上傳限制錯誤

以下我們介紹該如何修改網站的設定,解除上傳檔案大小的限制,讓我們可以上傳大型的檔案。

PHP 設定

上傳檔案的限制只要是由 PHP 的設定所控制的,而 PHP 的設定可以透過下面幾種方式修改。

方法一:修改 functions.php

第一種方式是修改 WordPress 佈景主題的 functions.php,加入這幾行設定,而裡面的各個設定值就依照個人的需求來調整:

@ini_set( 'upload_max_filesize', '16M' ); // 單一檔案大小上限
@ini_set( 'post_max_size', '32M');        // POST 資料大小上限
@ini_set( 'memory_limit', '64M' );        // 記憶體上限
@ini_set( 'max_execution_time', '300' );  // 執行時間上限,單位為秒

但這種方式不見得每一個人都可以使用,我個人也不喜歡使用這樣的方式。如果無法使用這種方式的人,可嘗試下面幾種其他的方式。

方法二:修改 php.ini

最標準的做法是直接修改 PHP 的 php.ini 設定檔,找到對應的設定,修改成自己需要的數值。

修改單一檔案大小上限:

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

修改 POST 資料大小上限:

; 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 = 32M

修改記憶體上限:

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 64M

修改執行時間上限(單位為秒):

; 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

最後重新啟動 PHP 讓新設定生效:

sudo service php5-fpm restart

修改 nginx 設定

如果您的網頁伺服器是使用 nginx,除了修改上述的 PHP 設定之外,nginx 本身的檔案大小限制設定也需要一起修改,否則就會出現這樣的錯誤訊息:

2016/02/01 15:31:45 [error] 20830#0: *1143155 client intended to send too large body: 3164703 bytes, client: 108.162.222.88, server: blog.gtwang.org, request: "POST /wp-admin/async-upload.php HTTP/1.1", host: "blog.gtwang.org", referrer: "http://blog.gtwang.org/wp-admin/post.php?post=13249&action=edit"

若是在 nginx 的 log 檔中看到這樣的錯誤,就在 nginx.conf 設定檔中加入這一行設定就可以解決了:

http {
  client_max_body_size 32m;
}

然後重新啟動 nginx 讓新設定生效:

sudo service nginx restart

或是重新載入設定也可以:

sudo service nginx reload

修改完成之後,WordPress 上面的檔案大小限制就會是新的設定值。

how-to-increase-the-maximum-file-upload-size-in-wordpress-4

可上傳大檔案的 WordPress 網站

這樣上傳大型檔案就沒有問題了。

how-to-increase-the-maximum-file-upload-size-in-wordpress-3

WordPress 上傳大檔案

參考資料:PHP ManualKinstanginx