超过post_max_大小时上载CakePHP黑洞文件

超过post_max_大小时上载CakePHP黑洞文件,php,file-upload,cakephp-2.3,csrf-protection,Php,File Upload,Cakephp 2.3,Csrf Protection,如相应文件中所述,如果上载超过了POST\u最大大小限制,PHP将清除$\u POST和$\u文件 我有一个如下的表单,我正在使用Security组件: echo $this->Form->create(false, array('type' => 'file', 'action' => '...')); echo $this->Form->file('documentFile'); echo $this->Form->end('Upload');

如相应文件中所述,如果上载超过了
POST\u最大大小
限制,PHP将清除
$\u POST
$\u文件

我有一个如下的表单,我正在使用
Security
组件:

echo $this->Form->create(false, array('type' => 'file', 'action' => '...'));
echo $this->Form->file('documentFile');
echo $this->Form->end('Upload');
现在,当我上传一个超过上述限制的大文件时,由于CSRF验证失败,我得到了“请求已被黑洞”——这并不奇怪,因为PHP清除
$\u POST
也会删除CSRF保护令牌

我可以使用
Security->unlockdactions
来解决这个问题,但它似乎并不理想(而且我会失去CSRF保护)。在这种情况下,有什么方法可以防止黑洞


<>编辑:我不考虑增加<代码> PrxMax大小Sux/Cuth>一个解决方案——它只是增加了触发黑洞所需的文件大小,但不能解决核心问题。

< P> OK,我自己找到了解决方案。

我将以下内容添加到我的
AppController::beforeFilter()


可能这对其他人有用。

一个可能的问题是,您的上载文件大小在PHP.ini中太小。当CSRF错误太低时,我得到它;当我pr($this->request->data)时,我得到一个空数组


将限制提高到合理的程度已经解决了这个问题。

增加post\u最大值_size@nathanhayfield但这也是一个解决办法,对吗?如果你的目标是上传更大的文件,就不是了。哦,对了,也许你应该澄清一下。我的目标是向用户显示一条有意义的错误消息,而不是黑洞。但这不是一个完整的解决方案。假设我将限制设置为2GB。用户仍然可以继续并尝试上载大于2 Gb的文件(将脚本执行时间限制设置放在一边),这将再次触发黑洞。我知道这只是一个假设,但我一直在寻找一个确定的解决方案——并且找到了它(见我自己的答案)。
if (
   ($this->request->isPost() || $this->request->isPut()) &&
   empty($_POST) && empty($_FILES)
) {
    $this->Security->csrfCheck = false;
}