ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 在mod_fcgid中处理太长的请求

2019-07-03 08:17:52  阅读:152  来源: 互联网

标签:php post file-upload mod-fcgid


目标

当他们尝试上传的文件太大时,我想向我的客户端显示有意义的消息.

问题

现在,当我尝试发送太大的请求时,我的mod_fcgid会抛出500内部服务器错误.我不知道如何从下面说出这个错误:

> display_errors设置为0时出现PHP错误
>请求uri太长时间
>糟糕的重写规则
>其他糟糕的配置
>完全不同的东西

如果我要告诉我的客户“嘿,你试图在500 ISE处理程序中上传太大的文件”,它也会触发上述所有内容,这没有任何意义.

我尝试过的事情

我目前唯一能做的就是使用ErrorDocument 500 /generic-500.php重定向所有错误.转储$_SERVER和$_REQUEST没有显示任何有用的内容.

我可以通过以下方式绕过这个问题:

>在表单上创建AJAX包装器
>使其仅为此表单附加自定义标题
>当我被重定向到500 ISE时检查此标题

但它相当愚蠢,我必须记住为每个上传表单执行此操作.

这个问题

如何在PHP中检测500 ISE的原因或重新配置我的服务器,以便在收到POST请求时我可以在PHP中检测到过大的上传?

解决方法:

Dumping $_SERVER and $_REQUEST [inside 500 error handling script] doesn’t show anything useful.

怎么样$_SERVER [‘CONTENT_LENGTH’],你检查过吗?如果该值在错误处理脚本中仍然“完整”并且具有客户端最初发送的值,那么可能会继续这样做.

除此之外,似乎很难对PHP的这种错误作出反应 – 首先必须在mod_fcgid级别处理,以便它仍然使用相关信息调用脚本(或任何脚本) ;但从文档中我看不到任何方法.

作为一种解决方法,您可以尝试专门为脚本设置不同的ErrorDocument脚本,这些脚本是处理文件上载的端点 – 例如.通过在FILES指令中使用该指令,该指令仅包含您的上载处理脚本.
这样,如果你的“特殊”500错误脚本被调用,那么上传文件太大的原因可能很大 – 你可以告诉用户,最可能的原因是它们看到这个错误页面是那样的.
当然,您必须尽一切努力确保没有其他原因可以为这些脚本特别发生500 – 正如您已经说过的那样,这有点像p.i.t.a.也是,甚至可能不可能以完全可靠的方式……但也许这是一个开始.

最重要的是,在上传开始之前尝试防止这种情况发生可能是个好主意,客户端 – 在文件上传字段中添加maxlength属性可能无法阻止每个现有的浏览器,但是对于那些尊重它的人来说,它可能有助于在问题发生之前缓解这个问题. (HTML5已经指定了该属性;虽然我还没有检查它以什么方式与HTML5表单验证结合使用,以警告用户在这种情况下的具体错误原因.)

作为旁注:从HTTP的角度来看,在这种情况下回答状态代码500似乎不太合适 – 存在请求实体太大,并且应该在这种情况下将IMHO视为正确的响应.太糟糕的mod_fcgid不会自动执行此操作,因为这基本上可以解决问题而无需进一步的努力.

标签:php,post,file-upload,mod-fcgid
来源: https://codeday.me/bug/20190703/1364646.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有