質問: MediaWikiにサイズ2MBのPDFファイルをアップロードしようとして、500内部サーバーエラーが発生しました このエラーは、大きなファイルをアップロードするたびに発生するようです。 php.iniをすばやく確認しました 、以下の値がありました:
upload_max_filesize = 32M post_max_size = 20M
以下はhttpdのスナップショットです error_log。
ModSecurity: Access denied with code 44 (phase 2). Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY" required.
私はApacheとMediaWikiバージョン1.23を使用しています。
解決策:
ファイルの最大アップロードサイズとPOSTサイズは、 php.iniを介して2つの方法で制御できます。 およびmod_security 拡張機能。
以下に示すように、Webサーバーがmod_security拡張機能で有効になっているかどうかを確認します。
# apachectl -M |grep security
modsecurity.dを探すこともできます / etc / httpdの下のフォルダ およびmod_security.conf /etc/httpd/conf.d/のファイル 。 (Apacheのインストールパスはシステムによって異なる場合があります)。
注: デフォルトでは、mod_securityはApacheで有効になっており、推奨される構成もいくつかロードされます。
/etc/httpd/conf.d/mod_security.confを開きます 次の行をファイルして探します:
SecRuleEngine On
SecRuleEngineをオフにすることができます (SecRuleEngineオフ)または SecRequestBodyLimitの値を調整します およびSecRequestBodyNoFilesLimit 。
警告 :mod_securityは、SQLインジェクション、クロスサイトスクリプティング攻撃、セッションハイジャック、悪意のあるユーザーエージェント、その他の悪意のあるボットを防ぐWebアプリケーションファイアウォールであるため、無効にすることはお勧めできません。代わりに、以下の変数を調整してください。
SecRequestBodyLimit 13107200 #12.5 MB SecRequestBodyNoFilesLimit 131072 #128kb
完了したら、ApacheWebサーバーを再起動する必要があります
# /etc/init.d/httpd restart
共有ウェブホスティングを使用していて、ウェブサーバーを再起動するための管理者権限がない場合は、 .htaccessを作成できます。 以下に示すようにファイルします。
#.htaccessファイルを使用してSecRuleEngineをオフにする
<IfModule mod_security.c> <Files async-upload.php> SecFilterEngine Off SecFilterScanPOST Off </Files> </IfModule>
上記のスニペットはasync-upload.phpになります。以上です!