Frage: Ich habe versucht, eine PDF-Datei mit einer Größe von 2 MB in MediaWiki hochzuladen, und bin auf 500 internal server error gestoßen und dieser Fehler scheint aufzutreten, wenn ich eine größere Datei hochlade. Ich habe php.ini schnell verifiziert , die die folgenden Werte hatte:
upload_max_filesize = 32M post_max_size = 20M
und unten ist der Schnappschuss von httpd error_log.
ModSecurity: Access denied with code 44 (phase 2). Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY" required.
Ich verwende Apache und MediaWiki Version 1.23.
Lösung:
Die maximale Datei-Upload-Größe und die POST-Größe können auf zwei Arten gesteuert werden – über php.ini und mod_security Erweiterung.
Überprüfen Sie, ob der Webserver mit der mod_security-Erweiterung wie unten gezeigt aktiviert ist:
# apachectl -M |grep security
Sie können auch nach modsecurity.d suchen Ordner unter /etc/httpd und mod_security.conf Datei in /etc/httpd/conf.d/ . (Der Apache-Installationspfad kann in Ihrem System anders sein).
Hinweis: Standardmäßig ist mod_security in Apache aktiviert und lädt auch einige empfohlene Konfigurationen.
Öffnen Sie /etc/httpd/conf.d/mod_security.conf Datei und suchen Sie nach der folgenden Zeile:
SecRuleEngine On
Sie können SecRuleEngine deaktivieren (SecRuleEngine aus) oder passen Sie die Werte von SecRequestBodyLimit an und SecRequestBodyNoFilesLimit .
Warnung :Es empfiehlt sich nicht, mod_security zu deaktivieren, da es sich um eine Firewall für Webanwendungen handelt, die SQL-Injection, Cross-Site-Scripting-Angriffe, Session-Hijacking, schädliche User-Agents und andere bösartige Bots verhindert. Passen Sie stattdessen die folgenden Variablen an.
SecRequestBodyLimit 13107200 #12.5 MB SecRequestBodyNoFilesLimit 131072 #128kb
Anschließend müssen Sie den Apache-Webserver neu starten
# /etc/init.d/httpd restart
Falls Sie ein gemeinsam genutztes Webhosting verwenden und keine Administratorrechte zum Neustarten des Webservers haben, können Sie .htaccess erstellen Datei wie unten gezeigt.
#Verwenden der .htaccess-Datei zum Deaktivieren von SecRuleEngine
<IfModule mod_security.c> <Files async-upload.php> SecFilterEngine Off SecFilterScanPOST Off </Files> </IfModule>
Das obige Snippet schaltet async-upload.php aus. Das ist es!