最近在 Windows 中安装 XAMPP 时各种采坑,特此备忘解决方法供大家参考。

端口占用问题

因为端口占用而导致的报错应该是最常见的了,错误提示如下:

[Apache] This may be due to a blocked port, missing dependencies, 
[Apache] improper privileges, a crash, or a shutdown by another method.

此时,解决方法有两种:

修改默认端口

Apache 会默认监听 80 和 443 端口,这些端口有可能被其他服务占用,也可能被一些杀毒软件/防火墙禁用,我们可以把这些端口修改成其他的。

首先,在 XAMPP 控制台的 Apache 中选择 Config,然后选择 httpd.conf

image_1bgq5vniu1jk1a8l17emoa11eqpc.png-23kB

把其中的 Listen 80 改为 Listen xxx 其他端口。

同理,选择 Config > httpd-ssl.conf,把其中的 Listen 443 改为 Listen xxx 其他端口:

image_1bgq67a9p1g41epmqh9aim1kh9p.png-28.6kB

关闭占用默认端口的服务

此外,我们还可以关闭那些占用默认端口的服务,但首先需要查看它们是被哪些服务占用了。

新版本的 XAMPP 控制台中提供了 Netstat 按钮可以直接查看当前运行的服务:

image_1bgq6bd341d7v2iumhg1orpcpq16.png-45.1kB

也可以在命令行中输入以下命令查看:

netstat -ano

之后我们可以得到占用这些端口的 PID 值,然后使用以下命令中止这些进程:

taskkill /pid ${pid} /F

其中,${pid} 为具体的 PID 值。

我在安装 XAMPP 之前安装了 VMWare,而它会启动一个自动启动的进程 vmware-host 并占用 443 端口。为了解决这类自启动的服务,我们可以在 计算机管理 > 服务 中将其设为 手动禁用

多次安装导致的问题

除了端口问题。原先已经安装过、且没有卸载完全的 XAMPP 也会导致很多问题,比如出现以下报错:

Apache Service detected with wrong path
[Apache] Change XAMPP Apache and Control Panel settings or
[Apache] Uninstall/disable the other service manually first
[Apache] Found Path: "C:\xampp\apache\bin\httpd.exe" -k runservice
[Apache] Expected Path: "d:\dev_tools\xampp\apache\bin\httpd.exe" -k runservice

比如这里,将 XAMPP 安装了两次,且在不同的位置。由于 XAMPP 安装过程中会设置一些环境变量并注册一些服务,所以,在对后安装的 XAMPP 启动时出现了问题。

此时,需要做如下几步:

打开注册表编辑器

使用快捷键 Win + R 并输入 regedit 进入注册表编辑器。

找到 Apache2.x 服务

其中,Apache2.x 为版本,x 根据 XAMPP 版本不同而不同,路径如下:

HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > Apache2.x

修改 ImagePath

然后选择 ImagePath,并将其值修改为之前报错中 Expected Path 中的路径,如这里的报错为:

Expected Path: "d:\dev_tools\xampp\apache\bin\httpd.exe" -k runservice

则将其值修改为:

"d:\dev_tools\xampp\apache\bin\httpd.exe" -k runservice

image_1bgq7tqtk1cp56hr1653bq1ffc1j.png-122.7kB

注意,由于多次安装 XAMPP 导致的问题,还需要检查以下部分:

将 Apache 服务改为允许服务与桌面交互

控制面板 > 管理工具 > 服务 中,选择 Apache2.x 服务,并在 「登录」中勾选为「允许服务与桌面交互」。

image_1bgq84s251lv4vr32ff1gdtdiv20.png-48.2kB

查看 Apache 配置

由于先安装的 XAMPP 会对注册表和环境变量进行修改,后安装的 XAMPP 服务会直接使用它们。此后由于之前安装的 XAMPP 被删除,使得之后安装的那个也无法运行相应的服务。

这类问题常常导致 XAMPP 启动 Apache 的时候不报错,也无法启动,卡在以下提示中:

[Apache] Attempting to stop Apache service...

此时,我们可以打开 httpd.conf(打开方法见上),查看 ServerRoot 是否仍是之前安装的目录,如果是,则需要将该文件中所有的原路径替换为新路径:

image_1bgq8l0ko18ue1ofste61v9vsf52d.png-97.4kB

以下文件都需要做此替换:

httpd.conf
httpd-ssl.conf
httpd-xampp.conf
php.ini

image_1bgq8n1i61v2p7eu1jmg3051g8b2q.png-26.5kB

查看 PHP 环境变量

之前已经提过,安装过程中还会设置 PHP 的环境变量。

我们需要打开系统环境变量,查看是否存在 PHP 原目录,如果有,则需要将其替换为新目录。

注意,部分企业版系统的环境变量按钮无法打开,也就不能像网上提到的那种方式进行环境变量的编辑,此时我们可以在命令行中输入以下指令查看查看环境变量:

Path

将 PHP 环境变量修改之后使用以下命令设置:

set Path=xxxx

Mysql 服务无法启动

MySQL 服务无法启动的问题可以仿照 Apache 逐一排查,检查项为:

  1. 查看 3306 端口占用问题;

  2. 查看注册表中 mysql 的 ImagePath 是否正确;

  3. 将 mysql 服务改为允许服务与桌面交互;

  4. 检查 my.ini 文件,查看是否存在路径错误,如 socket 路径:

[client] 
# password       = your_password 
port            = 3306 
socket          = "D:/dev_tools/xampp/mysql/mysql.sock"

参考

  1. 安装新版xampp后apache无法启动提示:Apache Service detected with wrong path解决方案

  2. XAMPP端口占用问题的解决 - CSDN

  3. 查看端口占用情况 - 百度经验

  4. Windows根据端口查看PID根据并杀掉命令 - 简书


dailybird
1.1k 声望73 粉丝

I wanna.


引用和评论

0 条评论