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 结合使用。
我在服务器上有一个 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 结合使用。