运行Laravel 3.
我正在尝试使用laravel框架上传文件。如果文件大于upload_max_filesize
的php设置,则会抛出以下异常。
我在我的控制器和路由中尝试了这个并没有成功(if
语句运行 - 它设置了一个会话 - 但仍然抛出异常显示错误页面)
if ($_SERVER['CONTENT_LENGTH'] > 8380000) {
//do stuff here because its too big
// set a session and exit()
}
如何在不增加php内存限制的情况下防止抛出此异常?
错误:
Unhandled Exception
Message:
POST Content-Length of 9306598 bytes exceeds the limit of 8388608 bytes
Location:
Unknown on line 0
作为旁注,除了“增加你的php内存限制”之外,这个问题至少在laravel论坛上被问过两次没有给出好的答案。
编辑:问题似乎是laravel正在加载所有_POST
输入,然后我甚至可以在路由或控制器中检查它们。对我来说似乎是一个错误。
答案 0 :(得分:0)
这看起来像PHP的max post size,在许多系统上默认为8M(大约8388608字节)。在Laravel中没有什么可以解决这个问题,因为它在PHP级别处理/管理/配置。阅读Increasing the maximum post size,了解如何更改此内容。
答案 1 :(得分:0)
PHP正在提升警告,而Laravel正在将其视为致命错误。
这是在Error::shutdown
中完成的,抛出的任何PHP错误都会导致应用程序因此错误而关闭。
我找到的解决方案是过滤允许哪些错误类型在Error::shutdown
中结束
缺点是:
laravel/laravel.php
如果您计划使用新版本更新laravel(现在版本4.1很难发生),这不是一个好主意。这是我在文件laravel/laravel.php
第46行中所做的修改:
register_shutdown_function(function()
{
require_once path('sys').'error'.EXT;
$error = error_get_last();
if ( $error!==null )
{
if( $error['type']!=E_WARNING )
{
Error::shutdown();
}
}
});