2015-01-21 109 views
0

我正在嘗試製作文件上傳腳本,並且一直在努力解決此問題。無法上傳大於8MB的文件

我已閱讀並嘗試所有與此相關的SO答案,但無濟於事。

這是我在php中試過的。 INI:

file_uploads = On 
upload_max_filesize = 100M 
post_max_size = 100M 
memory_limit = 100M 

在Apache中,我有:

<Directory /var/www/uploads> 
php_value upload_max_filesize 10G 
php_value post_max_size 10G 
</Directory> 

我可能會嘗試別的東西不想到現在。

我也想提一下,8MB以下的所有內容都沒有問題上傳。此外,超時也不是問題,因爲上傳僅在幾秒鐘內失敗。

P.S.我正在使用Cloudflare。難道這是阻止我的上傳?

+0

您是否通過在phpinfo()中創建了一個test.php文件來確認您的PHP.ini位置? – 2015-01-21 02:48:40

+0

'print_r($ _ FILES)'在失敗時顯示什麼?這是一個託管帳戶嗎? – 2015-01-21 02:49:34

+0

我剛剛讀過關於這個地方,我可以確認我正在編輯一個錯誤的php.ini。現在我收到此錯誤:無法加載資源:服務器響應的狀態爲413(請求實體太大)「 – Alex 2015-01-21 02:50:07

回答

1

通過在phpinfo()中創建一個test.php文件來確認你的PHP.ini位置。

接下來,檢查您的Apache(LimitRequestBody指令*)和php.ini(upload_max_filesize)限制,因此通常將這些限制設置得更高。值以字節爲單位。

Apache 2.0的默認上傳大小爲524288,位於php「include file」/etc/httpd/conf.d/php.conf中,可以覆蓋此值,將以下指令放置在您的httpd.conf虛擬內存中主持人指令:

<Files *.php> 
LimitRequestBody 30000000 
</Files> 

(這個例子限制要求身體30M)

的Apache 1.3沒有這個默認的,所以你通常只改變php.ini文件(的upload_max_filesize,post_max_size設置)值和config.ini(maxuploadfilesize)值。

最後,檢查RequestReadTimeout設置。更在https://serverfault.com/a/260389

+0

我的確在編輯錯誤的php.ini,但我找到了正確的。我還補充說,在我的conf。現在我得到以下錯誤:'413請求實體太大。 請求的資源/上傳。php 不允許請求POST請求數據,或者請求數量超過 請求超出容量限制.' 我正在使用Apache 2.4和PHP 5.5。 我設法上傳了一個24MB的文件,但是有一個35MB的文件,我得到了那個錯誤。 – Alex 2015-01-21 02:55:50

+0

查看我的記錄:選中RequestReadTimeout設置。更多在http://serverfault.com/a/260389 – 2015-01-21 03:10:07

+0

LimitRequestBody是答案,只是你的代碼被限制爲〜30MB,我直接複製它。現在我又增加了兩個零,這很好。謝謝! – Alex 2015-01-23 17:01:55

0

有時EXCUTE時間發生問題, 使用參數或者set_time_limit(0);

檢查的php.ini 函數ini_set( '的max_execution_time',0); // 0