Yii2: Fatal error, Cannot use 'Object' as class name
При обновлении PHP на версию 7.2 столкнулся с ошибкой в "Fatal error, Cannot use 'Object' as class name" в Yii2...
Полный текст ошибки выглядит так:
Fatal error: Cannot use 'Object' as class name as it is reserved in /public_html/vendor/yiisoft/yii2/base/Object.php on line 77
Эта ошибка возникает т.к. в Yii2 версии 2.0.13 для всех родительских классов используется класс Object. В PHP версии 7.2, слово object является зарезервированным и поэтому возникает конфликт. Обсуждение проблемы тут: [PHP7] Consider to deprecate yii\base\Object as object might become soft-reserved #7936
Решение - надо обновить Yii до версии 2.0.13. (commit с исправлением проблемы)
В моем случае, при создании было использовано базовое приложение yii2-app-basic. К сожалению, на текущий момент, оно по прежнему в качестве зависимости использует Yii 2.0.5.
Поэтому, чтобы обновиться, открываем файл /composer.json, который находится в корне проекта, ищем там
0 1 2 3 4 5 6 7 8 |
"require": { .. "php": ">=5.4.0", "yiisoft/yii2": "~2.0.5", "yiisoft/yii2-bootstrap": "~2.0.0", .. } |
и меняем на
0 1 2 3 4 5 6 7 8 9 |
"require": { ... "php": ">=7.2.0", "yidas/yii2-bower-asset": "~2.0.13", "yiisoft/yii2": "~2.0.13", "yiisoft/yii2-bootstrap": "~2.0.7", ... } |
теперь выполняем обновление, пишем в консоле
0 1 2 |
composer update |
после обновления, ошибка должна пропасть
Автор:
| Теги:
Есть 1 комментарий.
Написать свой