如何在启动新php artisan serve前终止占用端口的现有Laravel服务进程
解决Laravel本地开发服务8000端口占用问题的操作指引
方法1:手动终止占用8000端口的进程
macOS / Linux 操作系统
- 执行命令查询占用8000端口的进程ID:
lsof -i :8000 - 输出结果中
PID列对应的数字就是进程ID,执行以下命令终止进程:
例如查询到PID为1452,就执行kill -9 <替换为查询到的进程ID>kill -9 1452
Windows 命令提示符(CMD)
- 执行命令查询占用8000端口的进程ID:
netstat -ano | findstr :8000 - 输出结果最后一列的数字就是进程ID,执行以下命令终止进程:
taskkill /PID <替换为查询到的进程ID> /F
Windows PowerShell
- 执行命令查询占用8000端口的进程ID:
Get-NetTCPConnection -LocalPort 8000 | Select-Object -Property OwningProcess - 执行以下命令终止对应进程:
Stop-Process -Id <替换为查询到的进程ID> -Force
方法2:启动服务时显式指定固定端口
你也可以在启动服务时直接指定要使用的端口,Laravel会优先使用你指定的端口,不会自动漂移:
- 固定使用8000端口启动:
php artisan serve --port=8000 - 如需同时允许局域网内其他设备访问,可指定绑定IP:
php artisan serve --host=0.0.0.0 --port=8000
方法3:编写一键启动脚本,自动杀进程+启动服务
如果不想每次手动操作,可以编写脚本实现启动前自动清理8000端口占用:
macOS / Linux 脚本
- 在项目根目录新建
serve.sh文件,写入以下内容:# 清理8000端口占用进程,无占用时忽略报错 lsof -i :8000 -t | xargs kill -9 2>/dev/null # 启动服务 php artisan serve --port=8000 - 给脚本添加执行权限:
chmod +x serve.sh - 后续启动服务直接执行:
./serve.sh即可
Windows 脚本
- 在项目根目录新建
serve.bat文件,写入以下内容:@echo off :: 清理8000端口占用进程,无占用时忽略报错 for /f "tokens=5" %%a in ('netstat -ano ^| findstr :8000') do taskkill /PID %%a /F 2>nul :: 启动服务 php artisan serve --port=8000 - 后续启动服务直接双击运行
serve.bat即可
内容的提问来源于stack exchange,提问作者code-8
相关产品推荐
相关产品推荐

