我正在将 CakePHP 3 应用程序升级到 CakePHP 4,并遵循升级指南。
但是,那bin/cake upgrade rector --rules phpunit80 <path/to/app/tests>
工具挂起。
一点背景知识,我的应用程序主要是用 CakePHP 3.6 制作的。我将其升级到 3.7,然后是 3.8,然后是 3.9,并在尝试升级到 4 之前确保一切正常(没有弃用警告)。
我正在关注CakePHP 4.0升级指南 https://book.cakephp.org/4/en/appendices/4-0-upgrade-guide.html。直到“Applying Rector Refactorings”为止,所有步骤都成功。
当我运行这个时:
PS C:\xampp\htdocs\my_app\upgrade> bin/cake upgrade rector --rules phpunit80 C:\xampp\htdocs\my_app\tests
我得到这个结果:
Rector v0.7.26
Then,
0/189 [>---------------------------] 0%
它就挂在那里(已经大约 1 小时了)。
对于如何解决这个问题有什么建议吗?
谢谢!
D .
好吧,我大概找到了解决问题的方法。这是我如何让 Rector 工作的。
- 将我的应用程序的 Cake 版本降级至 3.8.12(原为 3.9.0-RC2)
- 手动修复 app\vendor\cakephp\plugin-installer\src\Installer\PluginInstaller.php 中的花括号弃用通知:170
- To fix
Class Cake\Composer\Installer\PluginInstaller is not autoloadable, can not call post-autoload-dump script
,我删除了我的 app\vendor 文件夹,然后运行composer update
,这似乎解决了这个问题。到目前为止还没有收到该错误。
- 在这里对运行良好的应用程序进行了备份,并开始了 4.0 升级指南中的升级步骤。
- 在 \upgrade, ram
composer install --no-dev
,又收到消息了Class Cake\Composer\Installer\PluginInstaller is not autoloadable, can not call post-autoload-dump script
.
- Ran
bin/cake upgrade file_rename locales <path/to/app>
。没有问题。
-
Ran bin/cake upgrade file_rename templates <path/to/app>
。好的,没问题。
- 改变了我的
config/app.php
to be App=> paths => templates from 'templates' => [APP . 'Template' . DS], to 'templates' => [ROOT . DS . 'Template' . DS]
,(也做了区域设置)。
- Ran
bin/cake upgrade rector --rules phpunit80 <path/to/app/tests>
现在得到了结果。它似乎完成了所有更新,并输出了一些错误,但我决定继续。
- Ran
bin/cake upgrade rector --rules cakephp40 <path/to/app/src>
,现在看来有效了。它显示更新的文件数量、大量进度条等。它开始输出在我的控制器中所做的更改(按字母顺序),但随后它在前几个控制器之后挂起。然而,查看我的 src 文件夹,我可以看到所有控制器、模型等都已更新(最后修改日期是现在)。
- Ran
composer require --update-with-dependencies "phpunit/phpunit:^8.0"
。完成并看起来不错。
- Ran
composer require --update-with-dependencies "cakephp/cakephp:4.0.
这里有很多依赖性问题。我采取了一些替代步骤并更新了所有内容(实际上是从here https://github.com/cakephp/app/blob/master/composer.json)。这似乎解决了依赖性问题,但升级后的应用程序仍然存在无数问题。
我不会在这里进一步讨论,因为上面的信息解决了最初的问题,而且我还没有完成干净的升级。最终,我倾向于开始全新、干净的应用程序安装并重建我的应用程序,从重构文件中复制和修复代码(如上面提到的 dype)。
不管怎样,谢谢你的回复。
祝你有个好的一天,
D .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)