CakePHP:从3.9.x升级到4.0:bincake升级rector--rules phpunit80挂起。

问题描述 投票:0回答:1

我正在将CakePHP 3应用升级到CakePHP 4,并按照升级指南进行升级。

然而, bin/cake upgrade rector --rules phpunit80 <path/to/app/tests> 工具挂起。

一点背景,我的应用主要是用CakePHP 3.6制作的。 我把它升级到3.7,然后是3.8,然后是3.9,并确保一切都能正常工作(没有废弃警告),然后才尝试升级到4。

我遵循的是 CakePHP4.0升级指南. 所有步骤都成功,直到 "应用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

然后..,

0/189 [>---------------------------]   0%

而且就这样挂在那里(已经有1个小时左右了)。

有什么建议可以解决吗?

谢谢!D。

cakephp cakephp-4.x rector
1个回答
0
投票

好吧,我想出了一个解决这个问题的办法。 下面是我让Rector工作的方法。

  1. 将我的应用程序的Cake版本降级到3.8.12(原来是3.9.0-RC2)。
  2. 手动固定的大括号在app/vendor/cakephp/plugin-installer/src/Installer/PluginInstaller.php:170中的弃用通知。
  3. 要修复 Class Cake\Composer\Installer\PluginInstaller is not autoloadable, can not call post-autoload-dump script我删除了我的app\vendor文件夹,然后运行 composer update,这似乎解决了这个问题。 没有得到这个错误到这里。
  4. 在这里做了一个工作良好的应用程序的备份,并开始4.0升级指南中的升级步骤。
  5. 在upgrade中,运行 composer install --no-dev,再次收到消息 Class Cake\Composer\Installer\PluginInstaller is not autoloadable, can not call post-autoload-dump script.
  6. bin/cake upgrade file_rename locales <path/to/app>. 没有问题。
  7. Ran bin/cake upgrade file_rename templates <path/to/app>. 好吧,没有问题。
  8. 改变了我的 config/app.php 将要 App=> paths => templates from 'templates' => [APP . 'Template' . DS], to 'templates' => [ROOT . DS . 'Template' . DS](也做过地方)。
  9. Ran bin/cake upgrade rector --rules phpunit80 <path/to/app/tests> 并且现在得到了结果。 似乎做了所有的更新,并输出一些错误,但我决定继续前进。
  10. 运行 bin/cake upgrade rector --rules cakephp40 <path/to/app/src>现在似乎可以用了。 它显示了更新的文件的数量,很多进度条等. 它开始输出我的控制器中的变化(按字母顺序),但随后它挂起后,第一个几个控制器. 然而,查看我的src文件夹,我可以看到所有的控制器,模型等都已更新(最后修改日期是刚才)。
  11. 小兰 composer require --update-with-dependencies "phpunit/phpunit:^8.0". 完成,看起来OK。
  12. 小兰 composer require --update-with-dependencies "cakephp/cakephp:4.0. 这里有很多依赖性问题。我采取了一些替代步骤,并更新了所有内容(实际上是从 此处). 这似乎解决了依赖性问题,但升级后的应用仍然存在无数问题。

我不会在这里继续下去,因为上面这些信息解决了最初的问题,而且我还没有完成一个干净的升级。 最终,我倾向于开始一个全新的、干净的应用安装,然后重建我的应用,复制并修复重构文件中的代码(就像上面提到的dype)。

无论如何,感谢你的回复!祝你有一个好的,D。

© www.soinside.com 2019 - 2024. All rights reserved.