PHP 7, Symfony 3: абстрактный метод Fatal error 1, поэтому его необходимо объявить абстрактным или реализовать остальные методы.

После обновления php с 5.6 до 7 Symfony 3 вызывает это исключение:

Неустранимая ошибка: класс Symfony \ Component \ HttpFoundation \ Session \ Storage \ Proxy \ SessionHandlerProxy содержит 1 абстрактный метод и поэтому должен быть объявлен абстрактным или реализовать остальные методы (SessionHandlerInterface :: write) в \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ HttpFoundation \ Session \ Storage \ Proxy \ SessionHandlerProxy.php в строке 19

Symfony 3 несовместима с PHP 7? тот же код работает на php 5.6

композитор шоу -i вывод:

doctrine/annotations                 v1.2.7  Docblock Annotations Parser
doctrine/cache                       v1.6.0  Caching library offering an o...
doctrine/collections                 v1.3.0  Collections Abstraction library
doctrine/common                      v2.6.1  Common Library for Doctrine p...
doctrine/dbal                        v2.5.3  Database Abstraction Layer
doctrine/doctrine-bundle             1.6.1   Symfony DoctrineBundle
doctrine/doctrine-cache-bundle       1.2.2   Symfony Bundle for Doctrine C...
doctrine/inflector                   v1.1.0  Common String Manipulations w...
doctrine/instantiator                1.0.5   A small, lightweight utility ...
doctrine/lexer                       v1.0.1  Base library for a lexer that...
doctrine/orm                         v2.5.3  Object-Relational-Mapper for PHP
incenteev/composer-parameter-handler v2.1.2  Composer script handling your...
jdorn/sql-formatter                  v1.2.17 a PHP SQL highlighting library
kriswallsmith/assetic                v1.3.2  Asset Management for PHP
monolog/monolog                      1.17.2  Sends your logs to files, soc...
paragonie/random_compat              v1.2.2  PHP 5.x polyfill for random_b...
psr/log                              1.0.0   Common interface for logging ...
sensio/distribution-bundle           v5.0.3  Base bundle for Symfony Distr...
sensio/framework-extra-bundle        v3.0.12 This bundle provides a way to...
sensio/generator-bundle              v3.0.3  This bundle generates code fo...
sensiolabs/security-checker          v3.0.2  A security checker for your c...
swiftmailer/swiftmailer              v5.4.1  Swiftmailer, free feature-ric...
symfony/assetic-bundle               v2.7.1  Integrates Assetic into Symfony2
symfony/monolog-bundle               v2.8.2  Symfony MonologBundle
symfony/phpunit-bridge               v2.8.1  Symfony PHPUnit Bridge
symfony/polyfill-intl-icu            v1.1.1  Symfony polyfill for intl's I...
symfony/polyfill-mbstring            v1.1.1  Symfony polyfill for the Mbst...
symfony/polyfill-php56               v1.1.1  Symfony polyfill backporting ...
symfony/polyfill-php70               v1.1.1  Symfony polyfill backporting ...
symfony/polyfill-util                v1.1.1  Symfony utilities for portabi...
symfony/swiftmailer-bundle           v2.3.9  Symfony SwiftmailerBundle
symfony/symfony                      v3.0.3  The Symfony PHP framework
twig/twig                            v1.24.0 Twig, the flexible, fast, and...

php.ini

[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=6000
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.save_comments=1
opcache.fast_shutdown=1

person ar099968    schedule 18.03.2016    source источник
comment
Пожалуйста, покажите результат composer show -i   -  person Emii Khaos    schedule 18.03.2016
comment
@PatrikKarisch, я обновил вопрос   -  person ar099968    schedule 18.03.2016
comment
Вы используете Opcache и вам нужно его очистить? Также убедитесь, что вы не используете один и тот же Opcache в нескольких проектах, так как они могут мешать.   -  person xabbuh    schedule 19.03.2016
comment
Также убедитесь, что вы используете последнюю версию PHP 7 (7.0.4). Я помню, что ошибка, которая проявлялась аналогично этой, была исправлена ​​в более ранней версии.   -  person NikiC    schedule 19.03.2016
comment
@xabbuh да, я использую opcache. Если я отключу opcache, все заработает. Проект находится только на сервере (без совместного использования Opcache)   -  person ar099968    schedule 21.03.2016
comment
@NikiC Я пробовал 7.0.4 и 7.0.5RC1, проблема не устранена.   -  person ar099968    schedule 21.03.2016
comment
Попробуйте запустить с opcache.protect_memory = 1 и посмотрите, не возникнет ли ошибка segfault.   -  person NikiC    schedule 21.03.2016
comment
Ошибка @NikiC сохраняется.   -  person ar099968    schedule 22.03.2016
comment
Я получаю ту же ошибку при тех же условиях с Symfony 2.8.3. Если я перезапущу Apache, похоже, это прояснится.   -  person Jason Hanley    schedule 04.04.2016
comment
@JasonHanley ага! я думаю, что это проблема opcache ...   -  person ar099968    schedule 05.04.2016
comment
Вы пробовали удалить app/cache/*, а затем запустить app/console c:c? Может это какой-то старый SF кеш   -  person thormeier    schedule 10.06.2016
comment
да .. ошибка сохраняется на PHP 7 - Windows   -  person ar099968    schedule 10.06.2016
comment
такая же ошибка у меня возникает на Laravel. Я использую собственный драйвер сеанса symphony вместо драйверов laravel, и если я перезапущу apache, это тоже решит для меня. его на windows php 7.0.10 и opcache не включен для меня.   -  person Yousaf    schedule 31.08.2016
comment
У меня только что была эта проблема с 3.1, использующей PHP 7 на моем локальном компьютере. Я перешел на 5.6, и он снова заработал. Поэтому я вернул его на 7, чтобы проверить, сломан ли он, но он вернулся к нормальной работе. В настоящее время я использую WAMP на машине с Windows 10. Я думаю, что это определенно связано с opcache, перезапуск версий apache / переключение, похоже, не исправит его, когда он появится.   -  person Scott Flack    schedule 24.10.2016


Ответы (2)


Эту ошибку можно сбросить, перезапустив службы httpd.

Не удалось воспроизвести ошибку после ее возникновения, но это может быть сбой PHP, который, в свою очередь, вызывает неполное состояние, из-за которого сообщение об ошибке застревает в ответе буфера службы httpd, а затем оно обслуживается для каждого отдельного запроса на любой виртуальный хост, обслуживаемый этой службой, с тех пор, пока служба не будет отключена.

Отметьте комментарий Скотта Флэкса в другом ответе.

person Marc    schedule 04.05.2017
comment
Следуя этому решению, я перезапустил Xampp, и все было в порядке. - person Mz1907; 22.07.2017
comment
работал на меня, это заставляет меня беспокоиться о производственной среде, особенно о том, что мы не знаем, что произошло. - person Motassem MK; 27.11.2017
comment
Меня беспокоит, что возможно, что вывод буфера содержимого может застрять с определенным содержимым в буфере и выплевывать это публично для каждого отдельного запроса. Что, если он сломался при отображении конфиденциальной информации ... - person Marc; 08.01.2018
comment
В среде Windows перезапуск стека (WAMP, LAMP, XAMP и т. Д.) Решает множество проблем, особенно с загрузкой или чтением файлов. - person Sentence; 16.05.2019

Попробуйте выполнить обновление до Symfony 3.1.

Symfony 3.0 был выпущен в ноябре 2015 года, и хотя он должен быть совместим с PHP7 - PHP7 был официально выпущен только позже, в декабре 2015 года.

person Eeko    schedule 30.06.2016
comment
Я могу подтвердить, что у меня была эта проблема и на 3.1 - кажется, перезапуск apache решает ее. - person Scott Flack; 24.10.2016
comment
Да, перезапуск apache помог избавиться от сообщений. - person aLx13; 04.01.2017