php第131行:未定义的索引:姓名

4szc88ey  于 2023-03-16  发布在  PHP
关注(0)|答案(6)|浏览(151)

我用这个命令更新了 composer :

composer self-update

它被更新到2.0.4版本。然后当我尝试使用以下命令启动我的Laravel项目时:

php artisan serve

我得到这个错误:

In PackageManifest.php line 131:

 Undefined index: name

我试着用这个回到老版本的 composer :

composer self-update --rollback

composer被降级到1.9.3版本,但对错误没有帮助,然后我使用以下命令再次更新composer:

composer self-update --stable

但还是得到了同样的错误。
这是PackageManifest.php文件的第131行:

return [$this->format($package['name']) => $package['extra']['laravel'] ?? []];
7lrncoxx

7lrncoxx1#

首先,在使用composer self-update之后,您应该再次检查版本。然后,您尝试composer update。最后,您运行php artisan serve

7fyelxc5

7fyelxc52#

问题是Laravel默认供应商软件包之一有一个小错误。
修复此问题的解决方案如下:

rm -rf composer.lock
rm -rf vendor
composer install

这将把composer软件包更新到当前版本laravel的最新版本,这样应该可以解决这个问题。

dw1jzc5e

dw1jzc5e3#

这个问题实际上已经在Laravel中修复了,所以请确保您将Laravel更新到至少6.18.7+或7.6.0+或8.0+
仅供参考,如果您删除 composer 本地文件,它将更新您的所有依赖项,所以这不是一个好主意。
通过运行命令composer update laravel/framework应该有希望修复这个问题,而不会导致任何其他问题。如果你不能更新Laravel,那么你最好使用composer self-update --1降级到Composer 1。
如果您使用illuminate/foundation而不是laravel/framework,请确保使用composer update illuminate/foundation

mbskvtky

mbskvtky4#

在Illuminate\Foundation\PackageManifest.php中添加代码到第129行:

...
    $ignoreAll = in_array('*', $ignore = $this->packagesToIgnore());
    // ------------------:::::::::FIX::::::::::------------
    if (isset($packages['packages'])){
        $packages = $packages['packages'];
    }
    // ---------------------------ENDFIX-------------------
    $this->write(collect($packages)->mapWithKeys(function ($package) {
    ...
cunj1qz1

cunj1qz15#

备选办法1:
打开供应商/laravel/框架/src/照明/基础/包清单. php
则搜索代码:

$packages = json_decode($this->files->get($path), true);

插入

$packages = $installed['packages'] ?? $installed;

备选方案二:
运行命令

composer update
tkclm6bt

tkclm6bt6#

这帮助了我:
使用降级到Composer 1

composer self-update --1

相关问题