5

我正在使用4.x 升级指南将站点从 CakePHP 3.10.0 升级到 CakePHP 4.x。我一直成功,直到您需要运行以下命令:

bin/cake upgrade rector --rules phpunit80 <path/to/app/tests>
bin/cake upgrade rector --rules cakephp40 <path/to/app/src>

我跳过了第一个命令,因为我不进行单元测试(还没有!)。当我运行第二个命令时,它只是挂起。此命令根本没有输出。我让它坐了几个小时,但它什么也没做。我添加-v到命令中,最后得到了一些输出,但它仍然挂起:

$ bin/cake upgrade rector --rules cakephp40 ../vintage-lib/src -v
Detecting autoload file for /mnt/d/Programming/PHP/vintage-lib/src
-> Checking /mnt/d/Programming/PHP/vintage-lib/src/vendor/autoload.php
-> Checking /mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php
-> Found /mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php
Running /mnt/d/Programming/PHP/upgrade/vendor/bin/rector process  --autoload-file='/mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php' --config='/mnt/d/Programming/PHP/upgrade/config/rector/cakephp40.php' --working-dir='/mnt/d/Programming/PHP/vintage-lib/src' '/mnt/d/Programming/PHP/vintage-lib/src'

我已经尝试在 Windows、WSL 甚至 Linux VM 中运行它——结果保持不变,这让我相信它与我的代码或配置文件有关。我试图在我的每个插件上运行该命令,但我得到了相同的结果。

我还运行并修复了来自代码嗅探器的所有错误和警告,但这没有任何区别。

我不知所措,因为我不知道下一步该去哪里检查。任何帮助将不胜感激。

4

1 回答 1

0

我按照迁移指南到 T 进行了从 3.4 到 4.0 的升级,经历了每个小升级,但我仍然遇到了与 rector 挂起相同的问题。

解决方案是,有一个开箱即用的 PagesController 在 3.4 和 3.10 之间的某个时间点进行了更改。我必须用骨架应用程序( https://github.com/cakephp/app/blob/3.x/src/Controller/PagesController.php )中的版本替换它,以便校长通过。

如果这不是您的问题,请尝试一次运行一个目录来识别有问题的文件。您可以找到如下目录列表: $ find /path/to/app/src/ -type d

于 2022-01-22T13:11:58.037 回答