win10+wsl+docker 安装php-cs-fix后无法加载所有内置规则

背景#

由于种种原因,想在家中 Windows10 搭建开发环境已解决每天下班不背电脑(Mac Air M1)回家健身的烦恼(毕竟入伏了)。
Mac 中开发 hyperflaravel 均使用 phpstanphp-cs-fixer, 都能正常运行。
以此为背景

过程#

安装 docker, 编译扩展,升级 composer, 配置 phpstrom 均无问题,phpstan 已经能正常提示,启动服务,操作 MySQLRedis 均正常的情况下,php-cs-fixer 的进程一直意外退出,遂在 termial 中手动执行 demo 命令

php vendor/bin/php-cs-fixer –config=.php-cs-fixer.php fix app/Controller/

发现问题,如图所示:
问题图片

经查询源码,使用 symfony/finder:v6.0.19 加载 vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/ 目录下所有文件,并于配置规则进行匹配,源码如图 图中红框为异常位置

故进行 debug

Debug#

第一次#

前车之鉴: Mac 环境使用 orbstack 搭建,之前有次更新后无法识别 vendor 目录下的所有文件,但文件能正常挂载,尝试升级 orbstack 以解决。(当时也折腾坏了,上午更新了 100M+, 之后便不行了,到下午 2 点左右又有一个 7M 左右的小更新,再更新又好了)
后车之师:ok fine, 更新 docker 吧(虽然是刚刚从官网下载的)

Current version: 4.31.1 (153621)
New version: 4.32.0 (157355)
Download size: 477.8 MB

发现下载不了,它提示 download 后一直 0%,然后就没然后了…. 虽然有梯子… 但….

第二次#

既然环境有问题,重新编译总可以了吧,至少 2 次重新编译 php 后,我放弃了

第三次#

你🐂🍺,我换镜像。 于是乎从 php:8.0.30-fpm-alpine 更换为 hyperf/hyperf:8.0-alpine-v3.13-swoole, 依旧不行

第四次#

我换框架总好了吧,composer create-project laravel/laravel laravel_demo, 欸,不对你没有装 php-cs-fixer, 好的,我自己装 composer require --dev friendsofphp/php-cs-fixer, 不行

第五次#

怀疑 docker 挂载问题,遂修改代码,打印看效果,如图

可以看出,scandir 扫描出这么些个文件,而 Finder 仅仅只有 6 个。
更换了框架 laravel:9.*.*,依旧如此。

第六次#

文件访问权限、结束符 crlf 等等全查了,没有发现问题(或者我没想到?),就这 6 个文件,一气之下我自己补了一个文件,然后惊喜就出现了

虽然它新增的不是我新增的,但好歹新增了啊,于是就有了 aaa01.phpaaa02.phpaaa57.php….
然后不报错了,但进度一直为 0%,如图。并无其他输出。

第七次#

由于该目录 /www (暂叫 www 吧,毕竟我也换过挂载目录… 都一样) 为 windows(wsl2)挂载的目录,鉴于 windows 环境一贯的尿性,我把整个项目复制到了非挂在目录 mkdir /dddd && cp -R /www/demo /dddd, 然后在 /dddd 目录下执行,您猜怎么着~

提问#

我简单翻了翻 php-cs-fixer 的文档和 symfony/finder 的文档和 issue, 没发现类似的问题,那么实际开发项目肯都还是在挂载的目录里面进行的。请问社区各位大佬,有没什么好点的建议,让我对 win10 没死的心凉个透?

讨论数量: 2

你最后不是没问题么

9个月前 评论
hhhhkkk (楼主) 9个月前