Ремесленник Laravel мигрировать не удалось

Я получаю эту проблему: http://pastebin.com/B5MKqD0T

Неустранимая ошибка PHP: Uncaught TypeError: Аргумент 1 передан
Illuminate \ Exception \ WhoopsDisplayer :: display () должен быть экземпляром
Исключение, данный экземпляр ParseError

Но я понятия не имею, как это исправить, я новичок в Laravel, композитор и т. Д.

Я использую Laravel 4.0 (потому что я следую и старый учебник моего друга)

7

Решение

ParseError был представлен в PHP 7. С другой стороны, вы используете Laravel 4, который не поддерживает PHP7.

Laravel 5.1 — первая версия Laravel, поддерживающая PHP 7.

Итак, есть 2 решения:

  1. обновить Laravel до> = 5.1 (настоятельно рекомендую!)
  2. понизить PHP до 5. *

Узнайте больше о бросаемых исключениях в PHP7: https://trowski.com/2015/06/24/throwable-exceptions-and-errors-in-php7/

17

Другие решения

Нашел хороший обходной путь для отключения обработчика ошибок laravel. Добавьте это в начало вашего app / config / local / app.php (прямо перед возвращаемым массивом (…):

set_error_handler(null);
set_exception_handler(null);
5

Есть другой подход, в котором вы можете обернуть обработчик исключений 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 );
0

Laravel выпустил 4.2.20, который решил эту проблему. https://twitter.com/laravelphp/status/791302938027184128

0
По вопросам рекламы [email protected]