簡體   English   中英

請求的實體太大

[英]Request Entity Too Large

我收到這條消息,

Request Entity Too Large
The requested resource
/index.php
does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit. 

我設置

php_value post_max_size 50M
php_value upload_max_filesize 50M

.htaccess但沒有幫助

如何克服這個?

謝謝

看完 PHP 的memory_limitpost_max_sizeupload_max_filesize的提升后,我想給你推薦一些相關的文章,也許其中一篇可以解決問題。

我在服務器故障上找到了這篇文章:
https://serverfault.com/questions/79741/php-apache-post-limit/79745#79745

  • sybreon建議仔細檢查Content-Length ,並引用- “確保您直接連接到 Apache,而不是通過代理或反向代理。一些反向代理對請求的最大大小設置了上限作為一種安全措施。因此,您可能需要檢查它以及您的 Apache 日志,以確保沒有其他事情發生。”

  • sybreon 還發布了此鏈接: Apache 413 錯誤問題
    以下僅適用在 Apache 中打開mod_ssl模塊的情況 (否則此設置會導致服務器崩潰。)
    引用文章:
    “我使用的是 Apache SSL 客戶端證書,其限制為 128K,如果必須重新協商,更大的 POST 將失敗。
    這個 Bugzilla 帖子有線索 - 您必須將以下內容設置為 SSL 服務器的默認值,而不僅僅是目錄。

     SSLVerifyClient require

    否則,它會強制進行某種形式的重新協商,並因 413 錯誤而失敗。”

  • 上一篇文章也提到了LimitRequestBody指令。
    一個人在這里說這個指令的適當設置解決了他的問題。 .

我希望這些設置之一可以解決這個問題!

唯一對我有用的是調整 SSL 緩沖區大小。 您可以通過...

<Directory /my/blah/blah>
...
  # Set this to something big...
  SSLRenegBufferSize 10486000
...
</Directory>

...然后只需重新啟動 Apache 即可使更改生效。 (在: http : //forum.joomla.org/viewtopic.php?p=2085574找到這個)

您還可以使用“Location /”將設置簡單地應用於整個 VirtualHost:

<VirtualHost *:443>
# ...
    <Location />
        SSLRenegBufferSize 101048600
    </Location>
# ...
</VirtualHost>

我的服務器是 Apache。 是 mod_security 模塊,它阻止了大約 171 KB 的大數據的發布。 我在 mod_security.conf 中做了以下配置

SecRequestBodyNoFilesLimit 10486000
SecRequestBodyInMemoryLimit 10486000

如果PHP中的max_post_upload和max_file_upload已經設置,並且在Apache2.conf或者LimitRequestBody的ModSec配置文件中設置的足夠高

那么 .htaccess 文件可能會起作用。

  1. 轉到包含上傳 php 文件的目錄(拋出錯誤的文件或頁面。)

2 . 制作或編輯 .htaccess

3 . 編輯或創建一行,其中包含 LimitRequestBody 20971520。

  1. 保存 .htaccess。 設置權限。 ( 644 和 apache 所有者)

  2. 可能重啟apache。

多田。 希望修復。

此設置僅為此文件夾設置限制 - 這是避免 php 和 apache 中的全局設置的一種方法,該設置使您容易受到大數據包/加載 DOS 攻擊。

LimitRequestBody 0 為您提供無限上傳。

我在最后一天左右為這個 413 - Request entity too large 問題苦苦掙扎,因為我試圖將非常大(以 MB 為單位)的圖像上傳到服務器。

我的設置是 apache (227) 將請求代理到 jboss eap (6.4.20) 服務器以訪問其余端點。

2 事情對我有用。

  1. 使 SSLVerifyClient 在虛擬主機級別成為必需。 這意味着所有資源都需要提供有效的客戶端證書才能提供服務。 這對我來說不是一個選擇,因為除 /api 之外的所有資源都不應受到相互身份驗證保護。 所以,雖然它有效,但這對我來說不是一個選擇。

  2. 我刪除了所需的全局級別 SSLVerifyClient 並將其保留為“可選”。 我僅在<Location /api>...</Location>上啟用了必需選項。 訣竅是僅在達到某個閾值后才進行 SSL 重新協商 - 這將是我們所需的上傳文件大小。

  3. 所以,最后發現我必須在特定的 LocationMatch 上啟用“SSLRenegBufferSize”設置,如下所示:

    <LocationMatch ^/api/v1/path/(.*)/to/(.*)/resource/endpoint$>
    SSLRenegBufferSize 5242880 #allow upto 5MB for files to come through </LocationMatch>

(.*) 在上面的例子中代表我在端點中的路徑參數。 希望這可以幫助。

在 php.ini 中提高 PHP 的 memory_limit、post_max_size 和 upload_max_filesize 后,我仍然遇到問題。

還需要的是 apache2.conf 中的以下內容:

限制請求正文 1000000000

這是 1GB 的最大大小。

文檔說 0 是默認值,表示無限制。 但是,在我設置指令之前,我無法上傳大文件。

不要忘記重新啟動 apache2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM