【发布时间】:2014-05-15 20:34:35
【问题描述】:
目标
当我的客户尝试上传的文件太大时,我想向他们显示有意义的消息。
问题
现在,当我尝试发送太大的请求时,我的 mod_fcgid 会抛出 500 Internal Server Error。我不知道如何从以下内容中判断此错误:
-
display_errors设置为 0 时出现 PHP 错误 - 请求 uri 太长
- 错误的重写规则
- 其他错误配置
- 完全不同的东西
如果我要在 500 ISE 处理程序中告诉我的客户“嘿,你试图上传太大的文件”,它也会触发以上所有内容,这是没有意义的。
我尝试过的事情
我目前唯一能做的就是使用ErrorDocument 500 /generic-500.php 重定向所有错误。转储 $_SERVER 和 $_REQUEST 并没有显示任何有用的信息。
我可以通过以下方式以丑陋的方式绕过问题:
- 在表单上创建 AJAX 包装器
- 让它单独为这个表单附加自定义标题
- 当我被重定向到 500 ISE 时检查此标头
但这很愚蠢,我必须记住对每个上传表单都这样做。
问题
如何在 PHP 中检测 500 ISE 的原因或重新配置我的服务器,以便在收到 POST 请求时检测到 PHP 中的上传过大?
【问题讨论】:
-
考虑到你想显示有用的错误信息;为什么不直接使用
$_FILES['userfile']['size'] > maxSize,如果条件为假则上传文件,否则显示消息? -
因为在我开始执行我的 PHP 代码之前,mod_fcgid 接管并自行渲染 500 ISE。
标签: php post file-upload mod-fcgid