【问题标题】:PHP 7, Symfony 3: Fatal error 1 abstract method and must therefore be declared abstract or implement the remaining methodsPHP 7,Symfony 3:致命错误 1 ​​抽象方法,因此必须声明为抽象方法或实现其余方法
【发布时间】:2016-07-05 11:04:51
【问题描述】:

从 5.6 到 7 的 php 更新后,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

composer show -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

【问题讨论】:

  • 请显示composer show -i的输出
  • 你使用 Opcache 并且需要刷新它吗?还要确保您不要在多个项目之间共享相同的 Opcache,因为它们可能会干扰。
  • 还要检查您是否在最新版本的 PHP 7 (7.0.4) 上运行。我记得在早期版本中修复了一个与此类似的错误。
  • @xabbuh 是的,我使用 opcache。如果我禁用 opcache 所有工作。项目单独在服务器上(不是 Opcache 共享)
  • 我刚刚在本地机器上使用 PHP 7 的 3.1 遇到了这个问题。我切换到 5.6 并且它再次工作。所以我把它调回 7 看看它是否仍然坏掉,但它又恢复了正常工作。我目前在 Windows 10 机器上使用 WAMP。我认为这肯定与 opcache 有关,重新启动 apache/切换版本似乎并不能在它出现时修复它。

标签: php symfony php-7


【解决方案1】:

尝试升级到Symfony 3.1

Symfony 3.0 于 2015 年 11 月发布,尽管 should be compatible with PHP7 -- PHP7 才在 2015 年 12 月正式发布之后

【讨论】:

  • 我可以确认我在 3.1 上也遇到过这个问题 - 重新启动 apache 似乎可以解决它。
  • 是的,重新启动 apache 有助于消除这些消息。
【解决方案2】:

重启httpd服务可以清除这个错误。

在遇到错误后无法重现错误,但这可能是 PHP 崩溃,进而导致状态不完整,导致错误消息卡在 httpd 服务的缓冲区响应中,然后为每个从那时起,向该服务上提供的任何虚拟主机发出单个请求,直到该服务被终止。

信用 Scott Flacks 在其他答案中发表评论。

【讨论】:

  • 按照这个解决方案,我重新启动了 Xampp,一切正常。
  • 为我工作,这让我担心生产环境,尤其是我们不知道发生了什么。
  • 担心内容缓冲区输出可能会卡在缓冲区中的特定内容上,并为每个请求公开吐出。如果在渲染敏感信息时崩溃了怎么办...
  • 在 Windows 环境中,有时堆栈(WAMP、LAMP、XAMP 等)重启可以解决很多问题,尤其是文件加载或读取问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
相关资源
最近更新 更多