win10+wsl+docker 安装php-cs-fix后无法加载所有内置规则
背景
由于种种原因,想在家中Windows10
搭建开发环境已解决每天下班不背电脑(Mac Air M1)回家健身的烦恼(毕竟入伏了)。
在Mac
中开发hyperf
及laravel
均使用 phpstan
及 php-cs-fixer
, 都能正常运行。
以此为背景
过程
安装docker
,编译扩展,升级composer
,配置phpstrom
均无问题,phpstan
已经能正常提示,启动服务,操作MySQL
、Redis
均正常的情况下,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.php
、aaa02.php
…aaa57.php
….
然后不报错了,但进度一直为0%
,如图。并无其他输出。
第七次
由于该目录 /www
(暂叫www吧,毕竟我也换过挂载目录…都一样) 为windows(wsl2)
挂载的目录,鉴于windows
环境一贯的尿性,我把整个项目复制到了非挂在目录 mkdir /dddd && cp -R /www/demo /dddd
, 然后在/dddd
目录下执行,您猜怎么着~
提问
我简单翻了翻 php-cs-fixer
的文档和 symfony/finder
的文档和issue
,没发现类似的问题,那么实际开发项目肯都还是在挂载的目录里面进行的。请问社区各位大佬,有没什么好点的建议,让我对win10
没死的心凉个透?
你最后不是没问题么