2016-11-22 52 views
0

我正在部署一个TYPO3 6.2项目,其中(当前主控)Surf。安装(最新兼容版本)EXT:typo3_console(1.1.8)和EXT:coreapi(1.3.0)并在TYPO3项目中激活。使用Surf成功部署TYPO3项目后的操作码缓存

Fatal error: Cannot redeclare class tx_pdfcreator2 in /var/www/vhosts/preview/htdocs/releases/20161122165450/Web/typo3conf/ext/pdf_creator2/class.tx_pdfcreator2.php on line 37 

在TYPO3的清除操作码缓存后安装工具中的TYPO3再比如工作:

可惜的是我在浏览器请求成功部署项目时出现错误。

通过EXT:coreapi清除操作码高速缓存不能解决问题,尽管控制台上的输出是“完整操作码高速缓存已被清除”。

这是输出冲浪产生:

Deploying preview (20161122165450) 
Stage initialize 
Webserver 001 (Project_001) TYPO3\Surf\Task\CreateDirectoriesTask 
Webserver 001 (Project_001) TYPO3\Surf\Task\Generic\CreateDirectoriesTask 
Stage package 
Webserver 001 (Project_001) TYPO3\Surf\Task\Package\GitTask 
Webserver 001 (Project_001) Foo\Deployment\Task\LocalInstallTask 
Stage transfer 
Webserver 001 (Project_001) TYPO3\Surf\Task\Transfer\RsyncTask 
Webserver 001 (Project_001) TYPO3\Surf\Task\Generic\CreateSymlinksTask 
Webserver 001 (Project_001) TYPO3\Surf\Task\TYPO3\CMS\CreatePackageStatesTask 
Stage update 
Webserver 001 (Project_001) TYPO3\Surf\Task\TYPO3\CMS\SymlinkDataTask 
Webserver 001 (Project_001) TYPO3\Surf\Task\TYPO3\CMS\CopyConfigurationTask 
Stage migrate 
Webserver 001 (Project_001) TYPO3\Surf\Task\TYPO3\CMS\SetUpExtensionsTask 
Webserver 001 (Project_001) TYPO3\Surf\Task\TYPO3\CMS\CompareDatabaseTask 
Stage finalize 
Stage test 
Stage switch 
Webserver 001 (Project_001) TYPO3\Surf\Task\SymlinkReleaseTask 
Node "Webserver 001" is live! 
Webserver 001 (Project_001) TYPO3\Surf\Task\TYPO3\CMS\FlushCachesTask 
Stage cleanup 
Webserver 001 (Project_001) TYPO3\Surf\Task\CleanupReleasesTask 
Removing releases 20161117180245 

任何想法错在这里去了,我怎么能解决问题呢?

回答

2

要清除操作码缓存与冲浪,你需要的WebOpcacheResetCreateScriptTask和WebOpcacheResetExecuteTask任务添加到您的工作流程。

使用coreapi清除cli上的操作码缓存将不会执行任何操作。详细请见http://insight.helhum.io/post/142295674970/what-you-need-to-know-about-php-opcode-cache

+0

谢谢你的一个很好的链接。只是一件事:在TYPO3中禁用opcache.validate_timestamps意味着必须提供一个正确的'opcache.blacklist_filename',其中包含'LocalConfiguration.php','PackageStates.php','typo3temp /'中的所有内容。还有别的吗?或者,也许,你知道一些资源,哪里可以读到关于TYPO3的Opcache木管? –

+0

它很大程度上取决于您的设置和部署策略。如果您只是在部署期间更改代码和配置(推荐),则不需要任何备份列表,因为PHP文件只会在部署后更改。 – helhum

+0

我在这里部分同意,即使配置文件仅在部署过程中更改,TYPO3管理员可能希望在站点生存期内更改一些扩展设置,该设置将写入LocalConfiguration.php,但由于禁用了“validate_timestamps” '在Opcache中。与缓存文件一样 - 我猜他们在正常站点生存期间也会被创建/更新/删除。 –

0

使用Surf任务\TYPO3\Surf\Task\Php\WebOpcacheResetCreateScriptTask\TYPO3\Surf\Task\Php\WebOpcacheResetExecuteTask(它与Surf一起)而不是EXT:coreapi为我工作!

$workflow->addTask(WebOpcacheResetCreateScriptTask::class, 'package', $this); 
$workflow->addTask(WebOpcacheResetExecuteTask::class, 'switch', $this);