记一次Chocolatey造成的开发环境失误
前情
今早上班的时候,照例写完代码开始运行代码,结果一直报错。因为用到了redis
,报的还是redis
的错,笔者对redis
也很陌生,就以为是本地环境又抽了,就去折腾自己的事了。
笔者开始写一个简单的CRUD
案例,然后发现数据库一直连接失败。检查了MySQL服务是否开启、检查了账号密码是否正确,注释又添加了一大段代码,终于在输出了错误信息:could not find driver
(无法找到驱动)。
解决过程
菜鸡笔者一开始以为这里说的驱动是指盘符文件,因为写的数据库连接类里引入了一个数据库配置文件,又嗬哧嗬哧地去改路径,还是不对。终于反应过来这里的“驱动”应该指的是数据库驱动,也就是PHP的数据库驱动没有开。
运行了echo phpinfo();
,Ctrl+F查找一下,果然,这个配置文件不是之前常用的配置。
PHP的版本是最新的7.3.9
,这就很容易想到昨晚看到的一篇文章:《Windows统一开发环境的基础-Chocolatey》,大概是昨晚尝试了一下这个Windows下的包管理器,不小心把原先配置的PHP环境给覆盖了。
想明白之后,开始解决。
暴力解决法
一开始笔者以为Chocolatey
只是将新装的PHP添加进了环境变量,覆盖了前面的,但在终端工具中查看PHP的版本信息时,发现并没有关系。
嗯,想了想,还是把新装的PHP所在的文件夹整个删了吧。
很遗憾,有两个文件php7.dll
和PHP-CFG.exe
正在使用,无法删除。
打开资源管理器,把一系列Nginx服务终止了,使用资源监视器把php.exe
进程也终止了,嗯???还是删不掉??
又在“服务”那里看到php
,果断右键-停止。再去删除文件夹,发现可以删除了。
删除了新装的PHP,再去运行代码,发现一切正常工作。
思考
这个问题解决之后,有时间去想一下温和一点的解决方案。既然这个PHP环境是Chocolatey
添加了,那相应的肯定有卸载方法。这里记录一下关于Chocolatey
的一些操作总结:
Chocolatey
安装:使用管理员身份运行
cmd
终端工具输入以下代码@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
检查是否安装正确:同样是
cmd
代码choco -?
自定义
Chocolatey
的安装位置(默认为系统的默认安装位置:C:\ProgramData\chocolatey
)- 新建环境变量
ChocolateyInstall
,其值为自定义的安装位置 - 如果该位置不存在则必须手动创建
- 运行安装命令,如果已经安装,可以再次运行安装命令,可重新安装到指定位置
- 新建环境变量
使用
Chocolatey
安装软件:同样是以管理员身份运行cmd
choco install php choco install php -y cinst php choco install nginx maria php choco install nodejs.install --version 10 choco install choco.config
- 在安装命令后添加
-y
表示安装过程中的一切选项都默认为确定 cinst
是choco install
的简写install
后可跟多个软件包名称,表明一次性安装多个软件包install
后跟.config
文件,表明按照该配置文件安装软件包,这可以统一开发环境
其中
.config
类似于:<?xml version="1.0" encoding="utf-8"?> <packages> <package id="php" /> <package id="googlechrome" version="71.0.3578.98" /> <package id="vscode" /> <package id="7zip" /> </packages>
- 在安装命令后添加
升级包版本:还是
cmd
代码choco upgrage php
卸载包:依旧是
cmd
代码choco uninstall php
安装图形化界面:
choco install chocolateygui
还没有真正尝试使用这款工具。有机会用上再说。