【问题标题】:TYPO3 and Symfony problems (Non-Composer Mode) / CLI cronjob problemTYPO3 和 Symfony 问题(非 Composer 模式)/CLI cronjob 问题
【发布时间】:2021-10-07 18:39:26
【问题描述】:

我的 TYPO3 10.4(.21) 项目有问题。安装扩展时出现此错误,但之后一切正常。

Fatal error: Declaration of Symfony\Component\Config\Resource\SelfCheckingResourceInterface::isFresh(int $timestamp) must be compatible with Symfony\Component\Config\Resource\ResourceInterface::isFresh($timestamp) in /.../typo3_src-10.4.21/vendor/symfony/config/Resource/SelfCheckingResourceInterface.php on line 29

唯一不起作用的是要运行的 CLI 任务。

/usr/bin/php7.4-cli -f /.../typo3/sysext/core/bin/typo3 scheduler:run

这里出现以下错误:

Uncaught TYPO3 Exception Call to undefined method Symfony\Component\Console\Application::setCommandLoader()
thrown in file /.../typo3_src-10.4.21/typo3/sysext/core/Classes/Console/CommandApplication.php
in line 67

我已经构建了许多 TYPO3 项目,但不知道这里出了什么问题(最初没有构建那个项目)。

【问题讨论】:

  • 您应该提供完整的堆栈跟踪,而不是对这些错误进行疯狂的猜测!
  • 我的第一个想法是第一个错误与 symfony 中的故障有关,但我验证了 TYPO3 10.4 中使用的 5.3.0 版本中的代码并且无法发现任何故障。所以我假设你应该清除安装工具或cli中的所有缓存,也许故障就消失了。如果错误仍然存​​在,请检查 symfony 的版本。我不确定您的项目中的路径是否都正确(与/.../ 相关)所以也许也检查一下,每个源包只存在一次(当然尊重符号链接)。
  • 在我看来,PHP 在将命名空间解析为 symfony 类时存在问题。路径绝对正确。我已经多次清除安装工具中的所有缓存,并重新创建了自动加载信息,但 symfony 类没有包含在自动加载映射中。但我认为这很正常,因为另一个项目也没有包含它们,但 CLI cronjob 可以工作。
  • CLI 上的清除缓存也不起作用。同样的错误。还尝试了旧版本的 10.4(.10)。

标签: symfony typo3 command-line-interface


【解决方案1】:

Uragh...最初的开发者在扩展文件夹中有 symfony 类。通过搜索 Symfony 类文件的位置找到它。

$reflector = new \ReflectionClass("Symfony\Component\Console\Application");
echo $reflector->getFileName();

看到该文件指向一个包含该项目的 symfony 文件的扩展文件夹,而不是 TYPO3 源供应商文件夹中的常规 symfony 文件。

【讨论】:

    【解决方案2】:

    更新:算了,引入该问题的补丁还没有合并到 10.4.21 ......抱歉模糊。

    猜测,如果不深入了解,不能完全确定,但这可能与 10.4.21 中引入的补丁有关,并在即将到来的 10.4.22 中恢复: https://github.com/TYPO3/typo3/commit/088a85fcb1f09a829d622a06a5f9dfaff1b19244

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      相关资源
      最近更新 更多