如何升级TYPO3 4.5到6.2

How to upgrade TYPO3 4.5 to 6.2

将 TYPO3 4.5(或 6.1)升级到 6.2 的推荐步骤是什么?我有一个 mac 并且我的网站是 运行 在共享 Linux 帐户上。

这是我想分享的升级实践的分步指南。感谢 https://jweiland.net/typo3/vortraege/typo3camp-berlin-2014.html 上的指导,对我帮助很大。

请注意,这些是我的个人经验,可能适用于您的环境,也可能不适用于您的环境。认真对待一切。

我区分 "Quick" 和 "Long" 升级。对于 "Long" 升级,您需要进行两次升级。首先,升级活动站点的副本,让所有扩展和模板正常工作,准备就绪后,声明内容冻结,使用第一步中修改的文件重新进行升级。对于 "Quick" 升级,您立即声明内容冻结,进行升级和测试,然后直接部署到测试或实时环境。

在本地设置网站

  • 当您准备好冻结内容时(BE][adminOnly] = 0),别忘了检查站点是否有用户贡献的内容?如果是这样,要么禁用提交它的可能性,要么注意在启用升级站点后必须重新导入哪些表。

Hint: Work locally. I can only refer to using MAMP Pro (be sure to get the pro version) on a mac. Always be aware on which site (and with which DB) you are working, btw! And attention: OS X file system is case insensitve, which can be a bummer when deploying to Linux (see below). For the database administration, I prefer http://www.sequelpro.com/ to phpMyAdmin for most tasks. It's very handy to make backups or to quickly browse tables, although it has a few missing features in comparison with phpMyAdmin. It is also extremely reliable for importing dbs onto a live server - where phpMyAdmin can stall often.

  • 注意是否设置了 [SYS][UTF8filesystem]:通过 Coda 或 Transmit 等流行的 (S)FTP 客户端将文件传输到 OS X(尚未测试 Cyber​​duck ) 会损坏包含 UTF-8 文件名的文件名。因此,在您部署时,指向此类文件的所有链接都将无效。在传输或使用 scp 之前将它们打包到存档中。首先避免设置。

  • 创建您的本地 TYPO3 实例。如果您将 "old" 和 "new" 核心放在同一位置,这很实用,因此您可以通过符号链接轻松地在它们之间切换。创建并连接本地数据库。

Hint: If you're working on MAMP, you'll have to chown all the files (except templates and config files of your apps (like Sublime)) to _www:_www. I have found it useful to define some aliases for the sudo chown in ~/.bash_profile, like alias chownmamp="sudo chown -R _www:_www ." and vice versa to your own user. Another possibility might be to temporarily chmod 777 everything - when deploying, taking extra care this is removed (find . -type f -exec chmod 644 {} \;find . -type d -exec chmod 755 {} \;)

  • 复制站点和数据库以保留未升级的版本进行比较 - 即使在您部署之后

  • 初始化本地 git 存储库,不要忘记添加 .gitignore 临时数据。不时承诺!

Hint: If you use different hostnames for your local and the live site, replace them where needed. For the command line, I have found grep -rl 'www.site.ch' ./ | xargs sed -i 's/www.site.ch/www.localsite.dev/g' useful. But of course you can do that in your IDE or editor too. Don't forget to check realurl_conf.php and .htaccess too. For a quick run, it is also possible to use the real hostnames, so you don't have to replace anything (but won't be able to compare sites from the same machine).

  • 您现在应该能够登录到后端并进入安装工具

Hint: On MAMP, I've had issues with $TYPO3_CONF_VARS['BE']['warning_email_addr'] which prevented logging into the install tool with an error 500, as it couldn't sent the email. Remove that setting in localconf.php for the local upgrade if it happens.

准备升级

  • 备份文件和数据库。 (以后也经常进行数据库转储)

  • 重要提示: 安装工具 > 数据库分析器 > 清除表:清除所有缓存、日志以及历史数据(如果您愿意的话)。数据库越小,升级就越顺利。

  • 获取前端运行ning.

  • 此外,请确保您拥有管理面板。覆盖 TYPO3 缓存和调试性能瓶颈非常有帮助。此外,您可以在每次重新加载时可靠地强制进行 TS 渲染。在页面 TS 中设置 config.admPanel = 1,通过 admPanel=1 在您的管理员用户的 TS 中启用它,并使用您将从中查看 FE 的域登录。 adminPanel 只有在您登录该域时才会显示!当你在那里时,还要将 options.clearCache.system = 1 添加到管理员的 TS,这样你也可以在生产模式下清除系统缓存。

  • 安装 http://typo3.org/extensions/repository/view/smoothmigration 和 运行。解决您现在可以解决的问题,例如数据库中的 UTF8 问题。复制剩余的报告并将其保存在 word 文件或类似文件中 - 升级后您无法 运行 平滑迁移

  • 浏览所有分机。我们需要它们吗?您可以找出插件是否与(例如)SELECT * FROM tt_content WHERE list_type = 'news_pi1' 一起使用,或者通过查看 tt_content 中的所有 cType = 'list' 条目来确定。如果不使用,请考虑也删除扩展名。还是可以用更好的扩展代替,或者手动/通过 tt_content 重新构建? (例如旋转木马,我宁愿不必为此维护扩展。但请检查预算!一切都需要时间。

  • 我摆脱了 indexed_search,因为 ke_search 是一个非常可靠的替代方案,可以快速设置。

Hint: with FAL, the _cli_scheduler user needs rights for every file mount you want to index with ke_search, else the indexing via scheduler will fail.

  • 主要任务:检查扩展更新。如果有可用的兼容扩展更新,请执行此操作。但首先检查它是否适用于旧站点和新站点:http://typo3.org/extensions/repository/view/realurl : This version works for TYPO3 4.5.0 - 6.2.999 - 如果不能,请不要更新。

  • 一定要去掉realurl_clearcache,TER版本会在6.2

  • 完成删除后,卸载所有剩余的本地扩展。您不必卸载 sysexts。

  • typo3conf/ext 中,我们现在将有一个非常短的扩展列表。太好了!

  • 备份数据库并在安装工具中进行数据库比较。注意:请勿触摸稍后导入所需的扩展数据(tt_news、powermail、dam)。如果你敢,你可以重命名或删除其他 100% 过时的数据。

  • 学习BE中的"Reports"模块并采取推荐措施

  • 如果您有耐心,请检查站点上是否存在损坏的链接 - 它们在转换为 FAL 时可能会出现问题。

  • 有确定可以删除的内容/页面吗? (比如古测试页,重复等?)敢删

  • 不要忘记: 递归清空所有页面的回收站(模块 "Trash")。无需迁移已删除的内容。比照。 https://forge.typo3.org/issues/62360 一次删除多个项目

  • 重要提示:更新参考索引(在模块"DB Check"中)。升级前必须完美。

  • 再次备份...

进行升级

  • -> 将内核切换到 6.2

  • 重新加载后端,您将进入安装工具。要连接到数据库,您可能必须输入 "localhost" 而不是预填的 127.0.0.1

  • 安装工具:检查文件夹结构和系统环境,全部绿化。阅读系统环境,直到底部:"Red" 项目在顶部,但 "blue" 项目(推荐)在底部(例如,缺少系统区域设置,如果您使用 UTF8 文件系统,则需要它)。

Hint: don't be too eager with APC, the availability check in 6.2 isn't perfect, cf. https://forge.typo3.org/issues/64030 (you can't use it if your shared hosting relies on suPHP).

  • 安装工具:运行第一个精灵。只是第一个。不要 运行 "Migrate all file links of RTE-enabled fields to FAL"。

  • 重要提示: 以管理员身份登录后台。转到文件列表,必要时刷新文件树。现在在其设置中将文件挂载 (fileadmin...) 设置为 "Use case sensitive identifiers"。否则,您可能会在 sys_file 中以小写形式结束所有文件名,这在实时 linux 系统上将不起作用。

  • 此外,运行任务File Abstraction Layer: Update storage index在调度程序中更新参考索引。

  • 安装工具:完成升级向导的其余部分。要调试无法迁移的损坏链接,请使用 https://forge.typo3.org/issues/64122(6.2.10 向上)

  • 中的解决方法

Hint: If something doesn't seem to be complete after all wizards went through, you can re-enable the upgrade wizards in LocalConfiguration.php under ['INSTALL']['wizardDone']. (Like if the whole sys_file_reference table empty and there are no images in tt_content table - remove the line for TceformsUpdateWizard, so it can run again).

  • 重要提示: 安装工具:全部 配置:停用内容适配器!否则你将 运行 宁在一种缓慢的兼容模式下,而不是真正地进行整个升级。

  • 勾选"Reports"。全部变成绿色!

  • 安装工具:检查图像渲染(我更喜欢GD),设置拟合配置预设

Hint: Check typo3conf/AdditionalConfiguration.php and make sure there are no values in it that override values from LocalConfiguration.php. I've had this on a 6.1->6.2 upgrade, and thus was unable to enable error logs (the devIPmask was overridden all the time).

  • 主要任务:更新并安装具有与旧核心不兼容的更新的扩展。

Hint: here are a few occasional replacements I had to make for 6.2 compatibility:

require_once(PATH_tslib . 'class.tslib_pibase.php‘);
-> if (!class_exists('tslib_pibase')) require_once(PATH_tslib . 'class.tslib_pibase.php');

require_once(PATH_t3lib . 'class.t3lib_scbase.php‘);
-> require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('backend'). 'Classes/Module/BaseScriptClass.php‘);

t3lib_div::GPvar()
-> \TYPO3\CMS\Core\Utility\GeneralUtility::_GP()

mysql_num_rows($res)
-> GLOBALS['TYPO3_DB']->sql_num_rows($res)

t3lib_div::intInRange
-> t3lib_utility_Math::forceIntegerInRange

t3lib_div::view_array()
-> t3lib_utility_Debug::viewArray 

t3lib_div::testInt
-> t3lib_utility_Math::canBeInterpretedAsInteger

编辑:https://github.com/FriendsOfTYPO3/compatibility6/blob/master/Migrations/Code/ClassAliasMap.php

上有更全面的列表
  • 从 DAM 更新?使用 https://github.com/b13/t3ext-dam_falmigration, following Installation and Scheduler Task and Usage。请注意,使用 MAMP,您必须从命令行 运行 MAMP PHP,例如 /Applications/MAMP/bin/php/php5.5.18/bin/php ./typo3/cli_dispatch.phpsh extbase help

  • 要将 tt_news 移动到 tx_news?我遇到了导入器的问题,不是所有的翻译都被导入了。现在有更新的版本了。

  • 正在更新 Powermail?很好,有一个更新程序!谢谢!我也遇到了翻译问题。不过,在一种情况下,它们可以通过点击表单的 "localise" 按钮来解决。

  • rlmp_tmplselector:使用 https://github.com/jweiland-net/rlmp_tmplselector/ 或将页面类型选择移动到核心的后端布局。

Hint: In the last case, take care, to select the page template in accordance to the selected BE Layout, never use .if, always use CASE. See With TYPO3 be_layout, how to choose frontend template correctly (performance-wise)?

Hint: Btw, extensions I use on all sites: realurl_clearcache, nc_staticfilecache, sourceopt, ke_search. On most sites (feature-based), of course: news, powermail.

  • 不要忘记:检查非管理员用户的后台权限。可能需要为 FAL(文件抽象层)的表和字段添加权限。如果您必须修改内容,请使用模拟编辑器用户尽早发现问题。

  • 通过 "Language" 模块更新翻译,因此编辑器将获得翻译后的后端和扩展

Hint: Also make sure that the "page tree rights" group is properly set up, cf http://typo3.uni-koeln.de/typo3-admin-access-default.html?&L=0

  • 包含变音符号等特殊字符的文件名可能会出现问题,有时会导致文件链接损坏(我使用 Integrity or Scrutiny 代替 mac 来检查整个站点),有时只会出现丑陋的文件名。如果需要,手动检查和处理(如果 FAL 有效,您可以在后端重命名它们)。

Hint: Here's a snippet I add to all user's userTSConfig.

  • 遍历所有内容。如果你有时间和预算,让网站更好,使用 webpagetest.org 来发现性能漏洞,清理 .htaccess,合并资产,在管理工具中检查页面渲染时间,更新前端依赖项,检查 404 处理,将模板移动到 typo3conf/ext/templates(最好搜索 - 替换数据库转储中的所有路径!),整理用户和组,将所有模板从数据库移动到包含,清理模板结构等 - 这一切都取决于您可以访问该站点的时间。

  • 进行备份。再次.

测试和部署

  • 在实时服务器上测试!或者,如果它不是一个可以承受一些停机时间的知名网站,那就上线吧,将文件(没有 typo3temp)和数据库移动到服务器,设置符号链接,清除所有缓存等。

  • 在实时系统上,检查安装工具。可能您需要调整一些 php.ini 设置。并将配置预设设置为"Production".

  • 重建参考索引

  • 勾选"Reports"。关于区分大小写的问题,您现在可能会在此处看到丢失的引用 - 您没有在 Mac 上看到那些引用,因为您的文件系统不区分大小写。此外,您可以查询 sys_file 以获得 missing = 1。您可以在本地重新 运行 上面提到的调度程序 FAL 任务,看看它是否可以修复一些文件名。如果没有其他办法,你仍然可以将所有文件重命名为小写,cf。 How do I rename all files to lowercase?

  • 检查 cronjobs 和调度程序任务(也转到调度程序模块中的 "Check configuration",查看 cli 用户是否存在)。啊,另请查看您是否 运行 正在使用当前的 php 版本。还要检查你是否不禁止 google 抓取 robots.txt

  • 中的实时版本
  • 是不是要配置一些备份例程或者更新脚本?现在就做。

  • 如果它还不起作用,请不要惊慌。可能它只是缓存。或者别的。

  • 当站点运行满意一段时间后,运行另一个dbcomp并删除所有旧表。

  • 等等。我忘记了什么?稍后再补充。

检查非管理员用户的后端权限。可能需要为 FAL(文件抽象层)的表和字段添加权限。