2016-11-22 3 views
0

Я развертываю проект TYPO3 6.2 с (текущим мастером) Surf. И EXT:typo3_console (1.1.8), и EXT:coreapi (1.3.0) установлены (в самых современных совместимых версиях) и активированы в проекте TYPO3.Кэш Opcode после успешного развертывания проекта TYPO3 с использованием Surf

Unfortunatelly Я получаю сообщение об ошибке при запросе успешно развернут проект в браузере:

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-х Install Tool экземпляр TYPO3 работает снова.

Устранение неполадок с помощью EXT:coreapi не решает проблему, хотя вывод на консоли «Полный кеш-код операции очищен».

Это выход Surf генерирует:

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 ничего не сделает. См. http://insight.helhum.io/post/142295674970/what-you-need-to-know-about-php-opcode-cache для подробного описания

+0

Благодарим вас за отличную ссылку. Только одно: отключить 'opcache.validate_timestamps' в TYPO3 означает, что у вас должен быть правильный' opcache.blacklist_filename', который включает 'LocalConfiguration.php',' PackageStates.php', все в 'typo3temp /'. Что-то другое? Или, может быть, вы знаете какой-то ресурс, где можно прочитать о трубке Opcache для TYPO3? –

+0

Это зависит от стратегии установки и развертывания. Если вы изменяете только код и конфигурацию во время развертывания (рекомендуется), вам не нужны никакие обратные записи, поскольку файлы PHP будут меняться только после развертывания. – helhum

+0

Я частично согласен здесь, bcs, даже если файлы конфигурации изменяются только во время развертывания, администратор 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);