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

Laravel使用php artisan serve多设备访问报Undefined array key 1错误求助

解决Laravel artisan serve多设备访问后报错"Undefined array key 1"的问题

核心原因

php artisan serve依赖PHP内置开发服务器,其日志输出格式在多设备并发访问时可能偏离预期,导致ServeCommand.php中解析启动时间的正则匹配失败,无法获取$matches[1]从而抛出数组键不存在的错误。

解决方案

1. 改用正式Web服务器(推荐)

PHP内置服务器仅适合单设备开发调试,不支持多设备并发访问,建议改用XAMPP自带的Apache:

  • 将Laravel项目放置在XAMPP的htdocs目录下(即你的C:\xampp2\htdocs\final_laravel\pgrcdata)
  • 打开XAMPP的Apache配置文件httpd-vhosts.conf,添加虚拟主机配置:
    <VirtualHost *:80>
        DocumentRoot "C:/xampp2/htdocs/final_laravel/pgrcdata/public"
        ServerName 192.168.1.8
    </VirtualHost>
    
  • 重启Apache服务,同一网络设备直接访问http://192.168.1.8即可。

2. 临时修复ServeCommand.php代码(不推荐,vendor更新会覆盖)

找到报错文件C:\xampp2\htdocs\final_laravel\pgrcdata\vendor\laravel\framework\src\Illuminate\Foundation\Console\ServeCommand.php,修改对应代码块:
原代码:

preg_match('/^\[([^\]]+)\] PHP \d+\.\d+\.\d+ Development Server \(http:\/\/.*:\d+\) started$/', $output, $matches);

return Carbon::createFromFormat('D M d H:i:s Y', $matches[1]);

修改为:

preg_match('/^\[([^\]]+)\] PHP \d+\.\d+\.\d+ Development Server \(http:\/\/.*:\d+\) started$/', $output, $matches);

// 增加匹配结果判断,避免数组键不存在
if (!isset($matches[1])) {
    return Carbon::now();
}

return Carbon::createFromFormat('D M d H:i:s Y', $matches[1]);

3. 升级Laravel框架版本

该问题属于框架已知bug,部分旧版本Laravel未处理日志格式异常的情况,执行以下命令升级到最新稳定版:

composer update laravel/framework

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:25:28