web-dev-qa-db-ja.com

PHP / Apache POST制限?

MediaWikiインストールで大きな(200KB程度)記事を編集しようとしていますが、編集すると次のエラーが発生します。

リクエストエンティティが大きすぎます

リクエストされたリソース

/path/to/my/wiki/index.php

POSTリクエストを含むリクエストデータを許可しない、またはリクエストで提供されるデータの量が容量制限を超える。

Apacheのドキュメントによると、 LimitRequestBody はデフォルトで0(無制限)です。 MediaWiki の2048KBの制限に近いとは思いません。/PHPが私を制限している場所がどこにあるかわかりません。

何ができますか?

更新:私のApacheエラーログはこう言います:

request body exceeds maximum size for SSL buffer

そしてそのすぐ下:

could not buffer message body to allow SSL renegotiation to proceed

可能な解決策が見つかるようです here

しかし、mod_sslを再コンパイルする必要があります。バグレポートの終わり頃に、再コンパイルするのではなく、このためのディレクティブを追加することについて話していたようです。これが起こったかどうか誰でも知っていますか?また、この修正のためにmod_sslを再コンパイルする必要があるだけですか?もしそうなら、ストックのUbuntuバージョンの代わりに私のコンパイル済みバージョンをどのように使用しますか?

5
mrduclaw

POSTリクエストのサイズを再確認しないでください。たとえば、netcatを使用して8080でリッスンできます。

netcat -l -p 8080

次に、フォームを送信する直前に、ポート8080でプロキシを使用するようにブラウザをリダイレクトします。あなたはこのようなものを得るはずです:

POST http://example.com/path/to/my/wiki/index.php HTTP/1.1
Host: example.com
Proxy-Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 217

最も重要な行はContent-Lengthおよびコンテンツの実際の長さを再確認します。これは、少なくとも問題が発生している場所を特定するのに役立ちます。少なくとも実際のコンテンツサイズがわかるでしょう。

次に、プロキシまたはリバースプロキシを介さずに、Apacheに直接接続していることを確認します。一部のリバースプロキシは、一種のセキュリティ対策としてリクエストの最大サイズに上限を設けています。そのため、Apacheログと同様にそれをチェックして、他に何も起こっていないことを確認することができます。

6
sybreon

私はこれと同じエラーがあり、500 MB以下のファイルをアップロードするajaxに関連するmodのセキュリティによるものだったため、構成を開いて修正しました。

Sudo vi /etc/httpd/conf.d/mod_security.conf

これを変更しました

SecRequestBodyLimit 131072 
SecRequestBodyNoFilesLimit 
SecRequestBodyInMemoryLimit

に:

SecRequestBodyLimit 524288000
SecRequestBodyNoFilesLimit 524288000
SecRequestBodyInMemoryLimit 524288000
1
zeros-and-ones

「413 Request Entity Too Large」というエラーが発生しました。

https://stackoverflow.com/a/19447688/784542 は私の問題を解決しました。

0
AnkitK