Я получаю эту проблему: http://pastebin.com/B5MKqD0T
Неустранимая ошибка PHP: Uncaught TypeError: Аргумент 1 передан
Illuminate \ Exception \ WhoopsDisplayer :: display () должен быть экземпляром
Исключение, данный экземпляр ParseError
Но я понятия не имею, как это исправить, я новичок в Laravel, композитор и т. Д.
Я использую Laravel 4.0 (потому что я следую и старый учебник моего друга)
ParseError
был представлен в PHP 7. С другой стороны, вы используете Laravel 4, который не поддерживает PHP7.
Laravel 5.1 — первая версия Laravel, поддерживающая PHP 7.
Итак, есть 2 решения:
Узнайте больше о бросаемых исключениях в PHP7: https://trowski.com/2015/06/24/throwable-exceptions-and-errors-in-php7/
Нашел хороший обходной путь для отключения обработчика ошибок laravel. Добавьте это в начало вашего app / config / local / app.php (прямо перед возвращаемым массивом (…):
set_error_handler(null);
set_exception_handler(null);
Есть другой подход, в котором вы можете обернуть обработчик исключений Laravel своим собственным, преобразовать новый тип Error в экземпляр Exception перед тем, как вернуться к Laravel.
Создайте ниже класс где-нибудь в вашем приложении:
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);
}
}
}
В начале config / app.php вы можете зарегистрировать класс-оболочку в качестве обработчика ошибок по умолчанию:
$existing = set_exception_handler(
['Some\Namespace\ErrorWrapper', 'handleException']);
ErrorWrapper::setPreviousExceptionHandler( $existing );
Laravel выпустил 4.2.20, который решил эту проблему. https://twitter.com/laravelphp/status/791302938027184128