探讨一下 Windows 下 PHP 环境最优解
几种方案以及各自的优缺点
Windows 集成环境 (PhpStudy / PhpEnv 等)
- 支持不完整 (部分PHP扩展不支持)
- 更新不及时
WSL (Windows Subsystem for Linux)
- WSL 1: 好久没折腾了, 前两天测试发现连不上外网(没深究)
- WSL 2: 始终避不开io性能问题
Hyper-V + Docker
- 本来应该是最优解了, 最近版本更新后, 隔一段时间就会出现站点无法访问的问题~
直接重装 Linux
最优解?
大佬们提提意见
本作品采用《CC 协议》,转载必须注明作者和本文链接
Laragon,最优解 :speak_no_evil:
我浪费了几天时间最后果断换回黑苹果
Windows 没有最优解,用啥都是小问题不断
非要选的话:WSL
换 mac :confused:
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...
没啥推荐的,你习惯用哪个就用哪个,单就开发而言,能完成工作就好。
你列举的四个方案,其实开发本质差别就2点。
其他就是各类工具安装和使用差别,除了win集成环境外,剩下这些东西有一定的学习成本,简单快捷肯定是集成环境快。
WSL2是一个不错的选择,不过人生苦短,我选择虚拟机,好处是可以完整使用,不像wsl有部分阉割,而且还可以统一系统环境,再不济还可以拷贝虚拟机
只是自己开发测试无所谓,但生产用 Linux
一直用宝塔
homestead 感觉还行 其他研究起来也费劲 或者轻量一点的虚拟机装宝塔
WSL太麻烦了,折腾起来人家用宝塔的都敲了两天代码了。现在在用宝塔,不过还是建议能用mac就用mac
用虚拟机啊,Virtual Box免费的,在虚拟机上装Centos或者Ubuntu,然后挂载文件夹
wsl2+docker
docker+sail
用 docker
wamp
UPUPW。支持php,java,.NET,不装IIS运行.NET网站,支持apache、nginx等环境。
Laragon
vmware虚拟机 + vmware tools工具目录共享 + phpstorm
wsl2 + docker
1.文件不映射到物理机 就可以避开io的问题 2.用vscode/ide 下的 直接直连容器开发功能 可以直接享受win的生态 Linux下的开发享受 :+1:
你说的自动休眠问题 可以在如图所示的地方关闭
vmware + docker + phpstorm
docker 如果你觉得不好用,可能你需要学习一下。
直接 Ubuntu
vm + docker + vscode远程开发 或者公司的电脑性能差点的是 wsl2 + docker + vscode容器内开发
wsl2 + 宝塔, 项目放在 wsl2 的 /www/wwwroot 目录下, 写个脚本开机自动启动 wsl2. 用起来跟 hyper-v 安装虚拟机 samba 服务映射网络磁盘体感上没什么区别, 甚至 wsl2 更方便一点, 因为 windows 可以直接查看子系统的目录. 开发的话直接用编辑器打开子系统的目录就可以.
直接装个php加一个mysql,多版本配置一下命令:php7 artisan serve 或者php8 artisan serve启动
目前用的 wls2 ,ubuntu 中直接 apt 安装了几个 php 版本,项目启动使用 php-cli ,项目代码在 windows 目录,在 Ubuntu 中设置了软连接,目前没有发现 IO 问题
WSL2为什么会有IO问题 :sweat_smile:。WSL2+Docker,用了几年了,没发现什么问题,什么操作系统问题、文件路径问题、大小写问题、多版本问题都不用担心了。墙裂推荐 :smirk:
wsl + sail
wsl
自己配 :joy:
Deepin 也不错吧
开发环境而已,无所谓
Mac/Linux Docker
Windows WSL+Docker
phpstudy。。
世间系统千千万,何必围着Windows转,考虑用MAC下的ServBay吧,帮你节省下的时间足够你去怀疑人生 :see_no_evil:
Windows WSL2安装原生Docker和使用Docker Desk有区别吗
一直用的WSL2+docker engie,没有用docker 桌面版了,那个经常出问题,容器时不时的不启动。但是docker engine有个问题就是好像xdebug端口无法识别,9003之类的端口是开了的。但是在validate端口时一直404
我是WSL + WSL里面的docker 没感觉有啥IO的问题
我是用window的 phpstudy 和wsl;项目中没有不能用的扩展就phpstudy;有不能用的就用wsl; 预算充足还是mac吧;