将图像上载到服务器时出错500

时间:2017-11-20 14:15:42

标签: php jquery ajax server

我使用PHP构建了一个具有库功能的CMS,您可以在其中选择多个图像并将其上传到服务器。对于上传图像我正在使用名为File-up的插件https://shabuninil.github.io/fileup/,它允许您使用ajax-requests将文件上传到服务器。当选择多个图像时,此插件会根据请求发送1(一)个图像,因此如果您选择5个图像,插件将向服务器发送5个ajax请求。在服务器上有一个脚本,它接受插件发送的图像,它验证图像并将其移动到具有move_uploaded_file函数的特定文件夹。问题是,不知何故,我对插件的某些请求得到500错误。我已经尝试了关于这里发布的500错误的不同帖子,stackoverflow.com,以解决问题,但没有成功。我想也许服务器一次从插件中获得了太多请求,所以我用5秒实现了Jquery的setTimeout()函数,但仍然没有成功。

我甚至认为CMS可能有一些错误或者其他什么因此我通过将它放在co.nf的另一台服务器上来测试CMS但是在那台服务器上我没有得到任何错误,一切正常,所以如果我'是的,问题出在原始服务器上。我没有想法,所以,任何人都可以帮助我吗?提前谢谢!

将图像放入特定文件夹的功能,在本例中为“upload”文件夹:

// Be sure we're dealing with an upload
if (is_uploaded_file($_FILES['filedata']['tmp_name']) === false) {
    throw new \Exception('Error on upload: invalid file definition');
}

// Rename uploaded file
$uploadName = $_FILES['filedata']['name'];
$ext        = strtolower(substr($uploadName, strripos($uploadName, '.') + 1));
$filename   = round(microtime(true)) . mt_rand() . '.' . $ext;
$target_dir = "../uploads/" . $filename;

if (move_uploaded_file($_FILES['filedata']['tmp_name'], $target_dir)) {
// Save filename into db
}

Image of the ajax-requests and their errors:

服务器错误文件出错:

[Mon Nov 20 01:17:44 2017] [error] [client IP_ADDRESS ] [client IP_ADDRESS] 
ModSecurity: Warning. Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY" 
required. [file "/services/mod_security-rules/00_asl_zz_strict.conf"] [line 
"37"] [id "330792"] [rev "2"] [msg "Multipart parser detected a possible 
unmatched boundary. This may be an impedence mismatch attack, a broken 
application or a broken connection.  This is not a false positive.  Check 
your application or client for errors."] [severity "NOTICE"] [tag "no_ar"]  
[hostname "MY_HOST"] [uri "/MY_SITE/cms/pages/upload.php"]

1 个答案:

答案 0 :(得分:1)

您收到mod安全错误,这让我怀疑您的服务器限制了上传的大小。

default limit is 512kb,它可能比现代图像文件轻得多。

您可以使用以下方法将其增加到更高的限制,例如1gb:

SecResponseBodyLimit 1048576

然后,您需要重新启动服务器以使其获取更改。