Apache启动失败显示[-1]错误,通常是端口被占用(如80/443被IIS、Skype等占用)或配置语法错误所致;需用netstat查端口、httpd.exe -t验证配置,并排查服务冲突与杀毒软件拦截。
![解决 xampp 启动提示“apache service not started [-1]”的排错指南](https://img.php.cn/upload/article/001/221/864/177557346473601.png)
Apache 启动失败并显示 [-1] 错误,基本可以确定是端口被占用或配置冲突导致的——XAMPP 本身没坏,它只是被系统或另一个服务拦住了。
检查 80 和 443 端口是否被占用
XAMPP 默认用 80(HTTP)和 443(HTTPS)端口,Windows 上这两端口常被 IIS、Skype、SQL Server Reporting Services 或 Windows 自带的“World Wide Web Publishing Service”霸占。
- 打开命令提示符(管理员权限),运行:
netstat -ano | findstr :80和netstat -ano | findstr :443 - 查到 PID 后,用
tasklist | findstr "PID号"确认进程名 - 常见“罪魁”:
httpd.exe(其他 Apache 实例)、skype.exe、w3svc.exe(IIS)、ReportingServicesService.exe - 临时解决:在 XAMPP 控制面板里点
Config → Apache (httpd.conf),把Listen 80改成Listen 8080,同时改掉ServerName localhost:80为ServerName localhost:8080
确认 Apache 配置语法是否合法
哪怕一个多余的空格、漏掉的引号,都可能让 httpd.exe 启动时静默失败,只报 [-1]。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 不要直接双击
apache_start.bat,而是进XAMPP\apache\bin\目录,用命令行运行:httpd.exe -t - 如果输出
Syntax OK,说明配置没问题;否则会明确指出哪一行、哪个文件出错(比如Invalid command 'PHPIniDir'通常是因为php_module没加载或路径错) - 特别注意
httpd-vhosts.conf文件——很多人加了虚拟主机但忘了取消Include conf/extra/httpd-vhosts.conf前的注释,或写错了<VirtualHost>块结构
排查 Windows 服务冲突与权限问题
[-1] 也可能是 Apache 尝试以服务方式启动时被系统拒绝,尤其在重装或升级后。
- 运行
services.msc,检查是否存在名为Apache2.4(或类似)的残留服务,右键“停止”并“删除”(用命令更稳妥:sc delete Apache2.4) - XAMPP 控制面板默认以“应用程序模式”启动 Apache,但如果勾选了
Service复选框,它会尝试注册 Windows 服务——此时必须用管理员权限运行控制面板,否则注册失败且不提示 - 杀毒软件(尤其是 Avast、McAfee)有时会拦截
httpd.exe创建监听 socket,可临时禁用测试
真正麻烦的不是报错本身,而是 [-1] 这个返回码太笼统——它不告诉你具体哪一行配置错、哪个 DLL 加载失败、甚至不提示端口冲突的具体进程。所以别跳过 httpd.exe -t 和 netstat 这两步,它们才是定位根源的最小可靠动作。

















