PHPStudy无法启动Apache和MySQL(Window环境)

时间:2022-02-10 16:34:43

PHPStudy无法启动Apache和MySQL


 PHPStudy是一款国产、小巧、方便的服务器软件集成环境,我觉得对于PHP初学者来说,最难的是PHP、Apache(Nginx或IIS)、MySQL环境的配置,尤其是在Window环境下(比起类Unix环境,Win环境配置各种开发环境简直反人类)。虽然网上很多人会推荐之间一开始学就在命令行下直接手动配置各个开发环境,但是我觉得除非是有一定服务器开发环境配置基础的人,否则一开始使用像PHPStudy或XAMPP这样的集成环境会更加合适,可以集中精力放在PHP或MySQL本身而不是在环境配置上花大量的时间(同时也会很挫败初学者的信心),等到有一定经验之后再慢慢学习各个环境的配置会更加合适。

在这里我更加推荐PHPStudy,首先它的功能更加强大(比起XAMPP),对于各种环境再次配置十分方便(我现在有时偷懒也会直接使用phpstudy),同时支持中文界面,对初学者十分友好;


在使用PHPStudy时,有时候会遇到如下的情况,启动Apache和MySQL之后,会返回启动失败的提示,返回信息大概会有以下:

Apache 已经启动...

MySQL 已经启动...

Apache 已经停止...

MySQL 已经停止...

情况大概如图:

PHPStudy无法启动Apache和MySQL(Window环境)


导致这样的原因有很多,可以按照如下的方式排查问题:

1、没有向系统服务注册Apache,MySQL服务;

解决方式:

打开win服务面板,可以在cmd控制台中输入:services.msc 打开面板;

在【拓展】面板中查找是否存在Apache,MySQL的相关服务,如果没有注册相关服务,有一种简单的方式可以注册该服务;

以管理员权限运行phpstudy,执行【其他菜单选项 / 服务管理器 / Apache / 安装服务】和 【其他菜单选项 / 服务管理器 / MySQL / 安装服务】操作;

PHPStudy无法启动Apache和MySQL(Window环境)



2、Apache或MySQL默认端口被占用

解决方式:

一般phpstudy中的Apache默认端口为80,MySQL默认端口为3306;

可以通过cmd控制台输入指令:netstat -ano 查看这些端口的使用情况,如果这些端口已经被其他程序占用,修改Apache和MySQL端口的方式有2种,之后要重启Apache和MySQL:

1)方式一:通过修改配置文件:

修改Apache端口:在phpstudy中打开【其他菜单选项 / 打开配置文件 / httpd-conf】打开Apache配置文件,修改如下字段,将原来的 Listen 80 修改为 Listen 8088 或其他端口;

PHPStudy无法启动Apache和MySQL(Window环境)

修改MySQL端口:在phpstudy中打开【其他菜单选项 / 打开配置文件 / mysql-ini】打开Mysql配置文件,修改如下字段,将port 3306修改为其他端口;

PHPStudy无法启动Apache和MySQL(Window环境)

2)方式二:通过phpstudy提供的常规端口设置:

打开phpstudy中【其他菜单选项 / php设置 / 端口常规设置】,修改相应的端口,并重新启动Apache和MySQL;

PHPStudy无法启动Apache和MySQL(Window环境)


3. 在以上两种排查都没有问题,或者执行了以上2中操作后仍然无法启动Apache和MySQL,在确保系统服务中已经注册Apache和MySQL,以及这两个软件的端口没有被占用的情况下,可以按照如下2种方式去启动服务:

1)方式一:通过控制台启动服务;

以管理员身份打开PHPstudy(否者权限不足会返回系统错误5),输入以下指令:

net start Apache2a

net start MySQLa

注意:这里的 Apache2a、MySQLa 是Apache和MySQL在系统服务中注册的名称(在不同的机器可能注册名不同),可以通过系统服务列表查询获得;

2)方式二:使用phpstudy提供的强制启动端口服务;

在PHPstudy打开【其他菜单选项 / 环境端口检测 / 环境端口检测】,打开如下窗口,先后点击【检测端口】,【尝试关闭相关进程并启动】;

PHPStudy无法启动Apache和MySQL(Window环境)



一般来说,phpstudy无法启动Apache和MySQL服务的情况使用以上3种方式就可以解决了,注意在执行以上排查时,前提条件是本地已经不存在的Apache和Mysql服务,如果之前已经装过相应的集成环境,最好先卸载干净(其实视情况有时并不需要,但是我也不是很清楚其他集成环境的服务注册机制,以防万一还是卸载干净比较保险),特别注意的是,一定要在系统服务先中卸载Apache和MySQL服务,具体步骤如下:

1)在cmd控制台中执行 services.msc ,打开服务面板,获取Apache和MySQL的系统注册名(比如查到 Apache2a,MySQLa);

2)在cmd控制台中执行以下指令删除相关服务:

sc delete Apache2a

sc delete MySQLa