Typo3 缓存刷新异常 - 如何调试

Typo3 Cache Flush Exception - How to debug

我在服务器上有一个 docker 化的 TYPO3 实例,并尝试手动刷新 typo3 缓存。 因此,我在 docker 容器内使用以下命令来执行此操作:

vendor/.bin/typo3cms cache:flush

但是,它失败了并且 returns 这个错误:

[ TYPO3\CMS\Core\Error\Exception ]
Warning: rename(): The first argument to copy() function cannot be a directory in /home/app/vendor/typo3/cms/typo3/sysext/core/Classes/Utility/GeneralUtility.php line 2432

如何调试并找出问题所在?

使用 -vvv 的完整堆栈跟踪

  [ TYPO3\CMS\Core\Error\Exception ]
  Warning: rename(): The first argument to copy() function cannot be a directory in /home/app/vendor/typo3/cms/typo3/sysext/core/Classes/Utili
  ty/GeneralUtility.php line 2432


Exception code: 1

Exception trace:
#0 ()
   vendor/helhum/typo3-console/Classes/Console/Error/ErrorHandler.php:86
#1 Helhum\Typo3Console\Error\ErrorHandler->handleError()
#2 rename()
   typo3/sysext/core/Classes/Utility/GeneralUtility.php:2432
#3 TYPO3\CMS\Core\Utility\GeneralUtility::flushDirectory()
   vendor/helhum/typo3-console/Classes/Compatibility/TYPO3v87/Service/CacheLowLevelCleaner.php:31
#4 Helhum\Typo3Console\TYPO3v87\Service\CacheLowLevelCleaner->forceFlushCachesFiles()
   vendor/helhum/typo3-console/Classes/Console/Command/Cache/CacheFlushCommand.php:69
#5 Helhum\Typo3Console\Command\Cache\CacheFlushCommand->execute()
   vendor/symfony/console/Command/Command.php:255
#6 Symfony\Component\Console\Command\Command->run()
   vendor/symfony/console/Application.php:1000
#7 Symfony\Component\Console\Application->doRunCommand()
   vendor/helhum/typo3-console/Classes/Console/Mvc/Cli/Symfony/Application.php:169
#8 Helhum\Typo3Console\Mvc\Cli\Symfony\Application->doRunCommand()
   vendor/symfony/console/Application.php:271
#9 Symfony\Component\Console\Application->doRun()
   vendor/symfony/console/Application.php:147
#10 Symfony\Component\Console\Application->run()
   vendor/helhum/typo3-console/Classes/Console/Core/Kernel.php:148
#11 Helhum\Typo3Console\Core\Kernel->handle()
   vendor/helhum/typo3-console/Scripts/typo3-console.php:30
#12 {closure}()
   vendor/helhum/typo3-console/Scripts/typo3-console.php:32
#13 require()
   vendor/helhum/typo3-console/typo3cms:3

cache:flush [--files-only]

这是一个已知问题,已通过 version 5.8.6 of the TYPO3 Console 解决。

嗯,问题是:如何调试它。即使现在问题已解决,这也可能有所帮助:

您得到了异常跟踪。您在 GeneralUtility.php 行 2432 中设置了一个断点。

如果您已经设置了 xdebug,您只需要使用适当的选项启动命令行命令,例如使用 -e 来生成调试信息。

你也可以看看DDEV。上次我尝试它时,将调试器设置为 运行 效果非常好,参见 https://ddev.readthedocs.io/en/stable/users/step-debugging/

我通常将 xdebug 与 PhpStorm 结合使用。