Php 当文件大于post_max_大小时,Symfony2验证程序不工作

Php 当文件大于post_max_大小时,Symfony2验证程序不工作,php,symfony,Php,Symfony,我已经在php.ini中将上传最大文件大小设置为32Mb 我正在使用Symfony2。我创建了一个包含文件变量的实体,以便人们可以上载文件: /** * @Assert\File(maxSize="3M") */ public $file; 当文件小于3Mb时,文件被正确上传 3Mb验证程序正常工作时,显示正常错误消息“文件太大” 但是,当文件>32Mb(post_最大大小)时: 致命错误:允许的内存大小150994944字节已用尽(已尝试) 在中分配62353390字节) /Appl

我已经在php.ini中将上传最大文件大小设置为32Mb

我正在使用Symfony2。我创建了一个包含文件变量的实体,以便人们可以上载文件:

/**
 * @Assert\File(maxSize="3M")
 */
public $file;
  • 当文件小于3Mb时,文件被正确上传
  • 3Mb验证程序正常工作时,显示正常错误消息“文件太大”
  • 但是,当文件>32Mb(post_最大大小)时:
致命错误:允许的内存大小150994944字节已用尽(已尝试) 在中分配62353390字节) /Applications/MAMP/htdocs/Symfony/vendor/Symfony/src/Symfony/Component/HttpKernel/Profiler/Profiler.php 在线177


当上传的文件高于post_max_size时,是否有办法使验证器工作?Symfony如何处理大于post\u max\u size的文件上传?

这是关于PHP的问题,而不是Symfony的问题。当您限制POST参数的大小时,您的提交请求甚至不会“到达”控制器

由于post_max_size限制所有post参数,包括文件,您应该定义post_max_size高于upload_max_filesize


现在,您的问题似乎与此相关:

非常感谢Pece。我想问题差不多解决了。我现在可以使用$\u SERVER['CONTENT\u LENGTH']检查上传的文件是否大于post\u max\u size。var_dump(POST)和var_dump(FILES)都返回数组(0){}。然而,在最后,当我想要抛出一个异常时,我仍然会得到分配内存错误。我只是不明白为什么Apache试图在内存中分配一个文件,即使它太大(>post_max_size)。我该怎么办?增加内存是没有意义的…嗨,佩奇,我还不能接受答案,因为问题仍然没有解决:-我试图找出为什么即使$\u POST和$\u文件为空,允许的内存大小也会用尽。。。如果你有什么想法,那就太棒了。您是否有调试此类错误的技巧?干杯有一个名为“memory_limit”的PHP参数,它定义了脚本可以使用的最大内存量。也许问题不在于文件上传,而在于你如何处理上传旁边的文件。。。在治疗的许多步骤中使用memory_get_usage(),以了解在何处使用大量内存。谢谢!我试过这个,这个很有趣。内存\u get\u usage()总是非常低。但是,symfony尝试分配给内存的大小是我上传的文件的大小…而且$\u POST和$\u文件也是空的。我最终对symfony本身感到疑惑,所以我在symfony外部和symfony内部尝试了一个简单的代码。。。它只在symfony之外工作。我已经接受了你的答案,并将发布一个新的问题与代码。现在我很确定这和Symfony有关。Symfony可能会在后台处理该文件。。非常感谢您的帮助。:-)如果您感兴趣,请点击这里:-)