我跟你们说,做我们这行的,没有一个趁手的本地环境,就像炒菜没有锅一样,根本玩不转。但是这个叫phpstudy的工具,它就是个磨人的小妖精。

实践记录:phpstudy启动失败,我的全程排查路
话说回来,我上次接了个私活,客户给的代码是几年前的老PHP项目,还非得用老版本的phpstudy才能跑起来,我寻思着老马识途,装个老版本得了。结果手贱一点,启动!Apache 和 MySQL 俩服务,盯着看半天,红灯就是不转绿灯,那一下午,我的暴脾气差点就上来了。
第一回合:端口被霸占了,最常有的事。
我第一反应就TM是端口冲突。这玩意儿太常见了,十次启动失败,八次是端口的问题。老子直接在命令行里敲了句 netstat -ano,然后一眼扫过去:
- 80端口有没有被哪个孙子占着?(Apache常用的)
- 3306端口有没有在跑?(MySQL常用的)
一查,果然,80端口被我之前装的一个远程桌面软件给霸占了。行,先给它把服务关了,或者直接进phpstudy的设置,把Apache的端口从80改到8080,这招简单粗暴。改完,再点启动!
绿了!……等等,只有Apache绿了,MySQL还是TM的红灯。
第二回合:权限不够,或者遗留文件搞的鬼。
我赶紧右键phpstudy的程序,“以管理员身份运行”。这算是对付Windows系统最基本的尊重了,万一是权限不够,程序压根没法操作底层端口和文件?
管理员身份运行,再次启动。这回Apache和MySQL同时亮了灯!我心想成了!
结果刚刷新一下浏览器,又TM红了!这下我真有点火大。跑去MySQL的log文件夹翻记录,一看,也没啥特别明白的报错,就是各种启动失败、停止失败的记录。
我就想起之前帮隔壁李工搞一个旧的数据库,它就是启动不了。网上搜了一圈,说是MySQL在非正常关闭后,可能会留下一个叫 ibdata1 的文件,或者一些 .pid 文件,这些东西会锁住数据库,让它下次启动时不知道该怎么办。
我二话不说,直接把整个数据库目录先备份一份,然后把那些可疑的文件——主要就是日志文件和那几个锁定的文件——全给删了。这叫清空战场,重新开始。删完,启动!这回MySQL终于稳定地绿了,没再跳红。
第三回合:系统环境缺了东西,最难缠的隐形杀手。
还有一次,我遇到一个更玄乎的,上面这两招都不管用。俩服务就是不绿。我那会儿真想直接砸键盘了。那是个周五的晚上,我约了朋友打牌,结果为了这个破玩意儿,差点误了饭局。
后来发现,原来是Windows系统里缺少了C++的运行库,也就是VC Redistributable。这种东西看不见摸不着,但你没有它,很多软件就是没法跑。我当时直接上微软官网,把几个常见的运行库版本,从2008到2017的,都给装了一遍。
装完重启电脑,再点phpstudy启动,那俩灯嗖的一下就绿了,稳得不像话。我当时就骂了一句,合着你启动不了,是TM身体里缺了营养?
所以说,遇到phpstudy启动失败,别慌,我总结了这三板斧:先查端口;再提权限/清缓存;3补环境。一步一步来,总能解决。就是浪费点时间,让人心里不痛快。
不过幸好搞定了,没耽误我周五晚上的牌局。不然这事儿能让我记恨好久。反正这些经验你们拿去用,能省一个下午算一个。

