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
没死的心凉个透?
推荐文章: