探讨一下 Windows 下 PHP 环境最优解

几种方案以及各自的优缺点

  • Windows 集成环境 (PhpStudy / PhpEnv 等)

    • 支持不完整 (部分PHP扩展不支持)
    • 更新不及时
  • WSL   (Windows Subsystem for Linux)

    • WSL 1: 好久没折腾了, 前两天测试发现连不上外网(没深究)
    • WSL 2: 始终避不开io性能问题
  • Hyper-V + Docker

    • 本来应该是最优解了, 最近版本更新后, 隔一段时间就会出现站点无法访问的问题~
  • 直接重装 Linux   N1f6M90TTS.png!large

最优解?

大佬们提提意见






本作品采用《CC 协议》,转载必须注明作者和本文链接
闲来无事码两行
slowlyo
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 78
JaguarJack

Laragon,最优解 :speak_no_evil:

6个月前 评论
JyPony 6个月前
slowlyo (楼主) 6个月前
JaguarJack (作者) 6个月前
kindiaing 6个月前

我浪费了几天时间最后果断换回黑苹果

6个月前 评论
slowlyo (楼主) 6个月前
slowlyo (楼主) 6个月前
臭鼬 (作者) 6个月前
翟宇鑫

Windows 没有最优解,用啥都是小问题不断
非要选的话:WSL

6个月前 评论
slowlyo (楼主) 6个月前

换 mac :confused:

6个月前 评论
slowlyo (楼主) 6个月前

Windows 主要就是扩展问题,加扩展简单的简单(提供 dll 的直接下载),难的非常难(需要 VS2022 编译)。另外如果在 Windows 开发 CGI 应用需要依赖一个额外的web服务器,比如 IIS、EasyWebSvr。如果只开发 cli 程序或者使用内置 Server 那其实比 *nix 要简单很多的,官网下载即用。

另外一个重要的问题就是很多框架、组件、扩展虽然写明支持各种 PHP 版本,但是它可能没有在 Win32 上面的 PHP 测试过,甚至根本没有提供兼容 API。可能存在路径问题(比如典型的根目录问题和反斜杠问题)。这些可能不是 PHP 本身的问题,是大家都倾向 *nix 生态而设计导致的。毕竟 PHP 是一个更适合服务端运行的语言,特意去考虑在 Windows 上运行的人并不多。

如果一定要在 Windows 上 Win32 PHP 下开发 CLI、Web 程序,我觉得最好的方式就是直接使用兼容 Win32 环境的框架。除此之外,如果你开发的代码最终只会在 Linux 运行,也许 remote 开发或者虚拟机是更好的方案(WSL 在实际使用过程中有不少坑,短时间可能发现不了)。

另外插个眼,如果有大佬懂 Windows 的编译,可以帮忙完善下 Windows 静态编译 PHP 的支持,或许以后就直接下载一个 php.exe 本地开发就完事了。
github.com/crazywhalecc/static-php...

6个月前 评论

没啥推荐的,你习惯用哪个就用哪个,单就开发而言,能完成工作就好。
你列举的四个方案,其实开发本质差别就2点。

  1. 系统环境,win和linux的区别,对开发的影响部分linux扩展在win下支持不太好,文件和目录名称大小写不敏感等。
  2. IO性能,虚拟挂载性能差些。

其他就是各类工具安装和使用差别,除了win集成环境外,剩下这些东西有一定的学习成本,简单快捷肯定是集成环境快。

6个月前 评论

WSL2是一个不错的选择,不过人生苦短,我选择虚拟机,好处是可以完整使用,不像wsl有部分阉割,而且还可以统一系统环境,再不济还可以拷贝虚拟机

6个月前 评论

只是自己开发测试无所谓,但生产用 Linux

6个月前 评论

一直用宝塔

6个月前 评论
Ailon 6个月前

homestead 感觉还行 其他研究起来也费劲 或者轻量一点的虚拟机装宝塔

6个月前 评论
kwok_wah 6个月前
DonnyLiu

WSL太麻烦了,折腾起来人家用宝塔的都敲了两天代码了。现在在用宝塔,不过还是建议能用mac就用mac

6个月前 评论

用虚拟机啊,Virtual Box免费的,在虚拟机上装Centos或者Ubuntu,然后挂载文件夹

6个月前 评论
slowlyo (楼主) 6个月前
小煜 6个月前
lovewei 6个月前
小煜 6个月前

wsl2+docker

file

6个月前 评论
slowlyo (楼主) 6个月前
slowlyo (楼主) 6个月前
slowlyo (楼主) 6个月前
slowlyo (楼主) 6个月前
ltaoo (作者) 6个月前
ltaoo (作者) 6个月前
ltaoo (作者) 6个月前
ltaoo (作者) 6个月前

docker+sail

6个月前 评论
sanders

用 docker

6个月前 评论

UPUPW。支持php,java,.NET,不装IIS运行.NET网站,支持apache、nginx等环境。

6个月前 评论
Junwind

vmware虚拟机 + vmware tools工具目录共享 + phpstorm

6个月前 评论
slowlyo (楼主) 6个月前
slowlyo (楼主) 6个月前
lovewei 6个月前
Junwind (作者) 6个月前
Junwind (作者) 6个月前
Junwind (作者) 6个月前

wsl2 + docker
1.文件不映射到物理机 就可以避开io的问题 2.用vscode/ide 下的 直接直连容器开发功能 可以直接享受win的生态 Linux下的开发享受 :+1:

6个月前 评论

你说的自动休眠问题 可以在如图所示的地方关闭

file

6个月前 评论
slowlyo (楼主) 6个月前
slowlyo (楼主) 6个月前
Silly-dog (作者) 6个月前

vmware + docker + phpstorm

6个月前 评论

docker 如果你觉得不好用,可能你需要学习一下。

6个月前 评论
slowlyo (楼主) 6个月前

vm + docker + vscode远程开发 或者公司的电脑性能差点的是 wsl2 + docker + vscode容器内开发

6个月前 评论

wsl2 + 宝塔, 项目放在 wsl2 的 /www/wwwroot 目录下, 写个脚本开机自动启动 wsl2. 用起来跟 hyper-v 安装虚拟机 samba 服务映射网络磁盘体感上没什么区别, 甚至 wsl2 更方便一点, 因为 windows 可以直接查看子系统的目录. 开发的话直接用编辑器打开子系统的目录就可以.

6个月前 评论

直接装个php加一个mysql,多版本配置一下命令:php7 artisan serve 或者php8 artisan serve启动

6个月前 评论

目前用的 wls2 ,ubuntu 中直接 apt 安装了几个 php 版本,项目启动使用 php-cli ,项目代码在 windows 目录,在 Ubuntu 中设置了软连接,目前没有发现 IO 问题

file

file

6个月前 评论

file 必须这个

6个月前 评论

WSL2为什么会有IO问题 :sweat_smile:。WSL2+Docker,用了几年了,没发现什么问题,什么操作系统问题、文件路径问题、大小写问题、多版本问题都不用担心了。墙裂推荐 :smirk:

6个月前 评论
LXK 6个月前
zhangrongwang (作者) 6个月前

开发环境而已,无所谓

5个月前 评论
skarner

Mac/Linux Docker

Windows WSL+Docker

5个月前 评论

世间系统千千万,何必围着Windows转,考虑用MAC下的ServBay吧,帮你节省下的时间足够你去怀疑人生 :see_no_evil:

5个月前 评论

Windows WSL2安装原生Docker和使用Docker Desk有区别吗

4个月前 评论
slowlyo (楼主) 4个月前

一直用的WSL2+docker engie,没有用docker 桌面版了,那个经常出问题,容器时不时的不启动。但是docker engine有个问题就是好像xdebug端口无法识别,9003之类的端口是开了的。但是在validate端口时一直404

4个月前 评论

我是WSL + WSL里面的docker 没感觉有啥IO的问题

4个月前 评论

我是用window的 phpstudy 和wsl;项目中没有不能用的扩展就phpstudy;有不能用的就用wsl; 预算充足还是mac吧;

4个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!