我遇到了这个问题:http://pastebin.com/B5MKqD0T
PHP致命错误:未捕获TypeError:参数1传递给 Illuminate \ Exception \ WhoopsDisplayer :: display()必须是一个实例 异常,给出ParseError的实例
但我不知道如何修复它,我是laravel和作曲家等的新手。
我正在使用laravel 4.0(因为我跟随我的朋友的老教程)
答案 0 :(得分:17)
ParseError
was introduced。另一方面,您使用的Laravel 4没有PHP7支持。
Laravel 5.1是第一个支持PHP 7的Laravel版本。
那么,有2个解决方案:
阅读有关PHP7中可抛出异常的更多信息:https://trowski.com/2015/06/24/throwable-exceptions-and-errors-in-php7/
答案 1 :(得分:6)
找到一个很好的解决方法来禁用laravel错误处理程序。将其添加到app / config / local / app.php的顶部(在返回数组(...)之前:
set_error_handler(null);
set_exception_handler(null);
答案 2 :(得分:0)
还有另一种方法,您可以使用自己的Laravel异常处理程序包装它,在传递回Laravel之前将新的Error类型转换为Exception实例。
在应用程序的某处创建以下类:
@using (Html.BeginForm("_Article", "Home", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
<input name="button" value="Update" class="btn btn-info" type="submit" class="submit" />
@Html.TextAreaFor(model => model.arttext)
<script>
CKEDITOR.replace( 'arttext' );
</script>
}
在config / app.php的开头,您可以将包装类注册为默认错误处理程序:
namespace Some\Namespace;
use Error;
use Exception;
class ErrorWrapper
{
private static $previousExceptionHandler;
public static function setPreviousExceptionHandler($previousExceptionHandler)
{
self::$previousExceptionHandler = $previousExceptionHandler;
}
public static function handleException($error)
{
if (!self::$previousExceptionHandler) {
return;
}
$callback = self::$previousExceptionHandler;
if ($error instanceof Error) {
$callback(new Exception($error->getMessage(), $error->getCode()));
}
else {
$callback($error);
}
}
}
答案 3 :(得分:0)
Laravel发布4.2.20解决了这个问题。 https://twitter.com/laravelphp/status/791302938027184128