Question : J'essayais de télécharger un fichier PDF de taille 2 Mo dans MediaWiki et j'ai rencontré une erreur de serveur interne 500 et cette erreur semble se produire chaque fois que je télécharge un fichier plus volumineux. J'ai rapidement vérifié php.ini , qui avait les valeurs ci-dessous :
upload_max_filesize = 32M post_max_size = 20M
et ci-dessous est l'instantané de httpd error_log.
ModSecurity: Access denied with code 44 (phase 2). Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY" required.
J'utilise Apache et MediaWiki version 1.23.
Solution :
La taille maximale de téléchargement de fichier et la taille POST peuvent être contrôlées de deux manières - via php.ini et mod_security extension.
Vérifiez si le serveur Web est activé avec l'extension mod_security comme indiqué ci-dessous :
# apachectl -M |grep security
Vous pouvez également rechercher modsecurity.d dossier sous /etc/httpd et mod_security.conf fichier dans /etc/httpd/conf.d/ . (le chemin d'installation d'Apache peut être différent dans votre système).
Remarque : Par défaut, mod_security est activé dans Apache et il charge également quelques configurations recommandées.
Ouvrez /etc/httpd/conf.d/mod_security.conf fichier et recherchez la ligne ci-dessous :
SecRuleEngine On
Vous pouvez désactiver SecRuleEngine (SecRuleEngine Off) ou ajustez les valeurs de SecRequestBodyLimit et SecRequestBodyNoFilesLimit .
Avertissement :Ce n'est pas une bonne pratique de désactiver mod_security, car il s'agit d'un pare-feu d'application Web qui empêche l'injection SQL, les attaques de scripts intersites, le piratage de session, les agents utilisateurs malveillants et d'autres robots malveillants. Au lieu de cela, ajustez les variables ci-dessous.
SecRequestBodyLimit 13107200 #12.5 MB SecRequestBodyNoFilesLimit 131072 #128kb
Une fois cela fait, vous devez redémarrer le serveur Web Apache
# /etc/init.d/httpd restart
Si vous utilisez un hébergement Web mutualisé et que vous ne disposez pas des privilèges d'administrateur pour redémarrer le serveur Web, vous pouvez créer .htaccess fichier comme indiqué ci-dessous.
#Utilisation du fichier .htaccess pour désactiver SecRuleEngine
<IfModule mod_security.c> <Files async-upload.php> SecFilterEngine Off SecFilterScanPOST Off </Files> </IfModule>
L'extrait ci-dessus deviendra async-upload.php. C'est tout !