错误异常

未定义数组键 1

在 vendor\laravel\framework\src\Illuminate\Foundation\Console\ServeCommand.php:368 364▕ $line = str_replace(‘ ‘, ‘ ‘, $line); 365▕ 366▕ preg_match($regex, $line, $matches); 367▕ ➜ 368▕ return Carbon::createFromFormat(‘DM d H:i:s Y’, $matches[1]); 369▕ } 370▕ 371▕ /** 372▕ * 从给定的 PHP 服务器输出获取请求端口。

1 供应商\laravel\framework\src\Illuminate\Foundation\Console\ServeCommand.php:368 Illuminate\Foundation\Bootstrap\HandleExceptions::Illuminate\Foundation\Bootstrap{closure}(“未定义数组键 1”, “C:\xampp\htdocs\lara app\p2\vendor\laravel\framework\src\Illu minate\Foundation\Console\ServeCommand.php”)

2 供应商\laravel\framework\src\Illuminate\Foundation\Console\ServeCommand.php:297 Illuminate\Foundation\Console\ServeCommand::getDateFromLine(“[2024 年 10 月 16 日,星期三 04:16:49] 127.0.0.1:52784 已接受”)

我完全重新安装了 xampp 和 composer 但仍然收到此错误

3

  • 问题出在你的return Carbon.. 行。最有可能的是数组中不存在$matches[1]该键1$matches


    – 

  • 您确定这个问题与 Composer 本身有任何关系吗?您是否自己编写了相关代码?如果没有,请将此作为错误报告给 laravel 的维护者


    – 

  • 也许 … 有一些想法?


    – 


5 个回答
5

您可以尝试更新 .env 文件。我今天也遇到了这个问题,它对我有用

-PHP_CLI_SERVER_WORKERS=4
+PHP_CLI_SERVER_WORKERS=1

参考:

0

我通过运行此代码解决了我的问题:

  1. php artisan 配置:清除
  2. php artisan 缓存:清除
  3. php artisan 视图:清除
  4. 然后运行 ​​artisan serve

或者

运行 Composer 更新

如果没有修复,请尝试降级 laravel 版本

2

  • php artisan optimize:clear 一次性完成所有作业:)


    – 

  • 您真的遇到了与上述完全相同的错误消息吗?我不明白缓存如何干扰与该错误消息相关的任何内容


    – 

您收到的错误与 x-debug 的错误配置有关。禁用它,然后再次运行 laravel。

您可以在这里找到如何:

3

  • 如果您知道这与任何错误的配置有关,为什么不修复配置呢?


    – 

  • 我不是这篇文章的作者,而且我自 2010 年起就不再使用 xampp


    – 


  • 如果您十四年没用过 XAMPP 了,您怎么会猜到 XDebug 与之相关呢?


    – 

我通过更改代码解决了这个问题:vendor\laravel\framework\src\Illuminate\Foundation\Console\ServeCommand.php:368

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

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

    // Handle the error or provide a default value
    return Carbon::now();

2

  • 现在它起作用了👍


    – 

  • 请记住,更改vendor文件夹中的代码永远不是一个好主意。任何软件包更新或任何重新安装都会再次删除更改


    – 

替换此功能对我而言有效

protected function getDateFromLine($line)
    {
        $regex = env('PHP_CLI_SERVER_WORKERS', 1) > 1
            ? '/^\[\d+]\s\[([a-zA-Z0-9: ]+)\]/'
            : '/^\[([^\]]+)\]/';

        $line = str_replace('  ', ' ', $line);

        preg_match($regex, $line, $matches);

        if (isset($matches[1])) {
            return Carbon::createFromFormat('D M d H:i:s Y', $matches[1]);
        }
    
        // Handle the error or provide a default value
        return Carbon::now();
    }

1

  • 请不要重复现有的答案,尤其是因为更改vendor文件夹中的代码永远不是一个好主意


    –