You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用php artisan启动部分Laravel应用时出现404错误及端口异常问题

问题诊断与修复方案

核心现象

  • 本地Ubuntu 22.04环境,API A用php artisan serve --port=5000能正常访问Laravel欢迎页;API B启动后报404,Postman登录请求挂起(预期是500错误),生产环境完全正常
  • 已通过Laravel Valet+Nginx把两个应用的PHP版本统一设为8.1,防火墙已关闭
  • 启动A后再启动B(5001端口),B直接挂起;停B后重启提示端口占用;换端口还是404,连默认欢迎页都出不来

分步解决

1. 彻底清理残留进程

停止B后提示端口占用,说明进程没杀干净:

# 查端口对应的进程ID
sudo lsof -i :5001
# 强制杀掉进程(把PID换成查到的数字)
sudo kill -9 PID

嫌麻烦直接杀所有php artisan serve进程:

sudo pkill -f "php artisan serve"

2. 断开Valet与内置服务器的冲突

你同时用了Valet(Nginx代理)和Laravel内置服务器,大概率是路由解析冲突:

# 先停掉Valet所有服务
valet stop
# 清缓存
valet clear-cache
# 换个新端口启动API B,比如5002
cd /你的API B路径 && php artisan serve --port=5002

如果这时候能看到欢迎页,就是Valet的Nginx配置搞的鬼,后续可以单独给API B配置Valet站点,不要混用内置服务器。

3. 检查API B的Laravel基础配置

404说明连默认路由都没匹配到,先查基础:

  • 打开routes/web.php,确认有没有默认路由:
    Route::get('/', function () {
        return view('welcome');
    });
    
  • 清Laravel缓存:
    php artisan route:clear
    php artisan config:clear
    
  • 检查.env里的APP_URL,要和访问地址一致:
    APP_URL=http://127.0.0.1:5002
    

4. 验证PHP环境与依赖

虽然设了8.1,但得确保依赖和扩展都齐:

  • 重装API B的依赖:
    cd /你的API B路径 && composer install --no-dev
    
  • 查PHP扩展,Laravel必须的扩展不能少:
    php -m
    
    缺的话用apt装,比如:
    sudo apt install php8.1-bcmath php8.1-mbstring php8.1-pdo php8.1-xml
    

5. 排查数据库连接导致的挂起

请求挂起大概率是数据库连不上卡死了:

  • 检查API B的.env数据库配置,要和API A的一致,账号密码权限没问题:
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=你的库名
    DB_USERNAME=你的用户名
    DB_PASSWORD=你的密码
    
  • 测试数据库连通性:
    php artisan db:connect
    
    连不上就查MySQL状态:
    sudo systemctl status mysql
    

总结

先搞定进程残留和Valet冲突,这俩是本地环境最容易踩的坑;再查Laravel基础配置;最后看数据库连接是不是堵了请求。

内容的提问来源于stack exchange,提问作者black leeder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:50:39