我只是试图部署我的应用程序,我只是运行我的服务器上的作曲家更新,我得到了以下错误:
在 PackageManifest.php 第122行: 未定义的索引: 名称
我怎样才能解决这个问题?
我也有同样的问题。
在我的情况下,降级的作曲家版本修复了这个问题。
他们在2天内更新了作曲家4次-我认为他们的最新更新有问题。
在我的案例中,1.10.1版本是相应的版本。
sudo composer self-update --1
希望能成功。
运行以下命令为我们修复了它
composer self-update --stable
我遇到过这样的问题,也试过 composer self-update --stable,但是没有结果。我发现这个文件属于 Laravel 框架。因此,下面的命令解决了这个问题:
作曲家更新幼虫/框架
作为一个临时修复,尝试这个,它为我工作,在下面的文件:
vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php
查找第116行并注释它:
$packages = json_decode($this->files->get($path), true);
在上面的注释行后面添加两行新的代码:
$installed = json_decode($this->files->get($path), true); $packages = $installed['packages'] ?? $installed;
我找到了很有帮助的 这期关于作曲家 GitHub 的回购
我将我的 Laravel 框架从5.8更新到5.8.38,按照该问题中显示的表格进行更新,错误消失了。
这个 Laravel 的博客文章也有帮助
如果不能升级 Laravel,那么可以通过运行
composer self-update --1
我遇到了同样的问题,我只是执行命令:
composer update
这将更新 comper.lock 文件。 在那之后,效果非常好。
我也面临同样的问题,我看到我的 Laravel 框架版本是 "laravel/framework": "6.0" 所以只要把盖子放在版本之前,它就会开始工作了。 "laravel/framework": "^6.0"
"laravel/framework": "6.0"
"laravel/framework": "^6.0"
在我克隆了一个 Laravel 项目并开始安装作曲家之后,我也遇到了同样的问题。然后我在这里读了一些解决方案。在我看来,这是不是一个好主意编辑幼虫芯。但如果只是为了测试,为什么不呢。
在我的情况下,我的解决方案是作曲家更新,而不是作曲家安装。在作曲器更新的情况下,它不使用 poser.lock 文件,而是从 poser.json 更新包。对我和我的特殊情况工程。
运行作曲家升级程序。 我在幼虫7号上就可以了
对于我的 Laravel 5.7项目删除 vendor文件夹和 composer.lock文件固定的问题。
Laravel 5.7
vendor
composer.lock
运行以下命令对我来说很有用。也许这会帮助到需要帮助的人。
Https://github.com/composer/composer/issues/9340#issuecomment-716210369
正如这里所说,你的幼虫版本可能与作曲家2冲突
composer update laravel/framework
应该解决你的问题:
在我的计算机作曲家版本2.0.9已经安装,我有同样的问题时,升级 Laravel 项目。
解决办法是:
最后,它完美地工作。
运行 composer update对我的 Laravel 5.7项目很有用
将作曲家降级为旧版本:
composer self-update <version>
例如:
composer self-update 1.10.1
我删除了我的供应商文件夹和 comper.lock,然后再次运行 composer install,这解决了我的问题。
composer install
某些版本的作曲家给出了这个错误,版本1.10.20没有抛出这个错误
composer self-update 1.10.20 composer install
我更新到作曲家 2.0.11和我有错误。降级到作曲家 1.10.20,它工作得很好,但它非常非常慢。
2.0.11
1.10.20
因此,对于那些像我一样不想改变供应商代码的人来说,仍然希望 Composer abc0知道它是 Laravel 的一种 bug,而 Laravel 已经在小版本(或修补程序)中修复了它。我用的是 Laravel 5.7.9而我的 vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php ->build()是这样的:
5.7.9
vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php ->build()
if ($this->files->exists($path = $this->vendorPath.'/composer/installed.json')) { $packages = json_decode($this->files->get($path), true); }
但是在 Laravel 5.7.29 PackageManifest.php中,同样的文件是固定的:
if ($this->files->exists($path = $this->vendorPath.'/composer/installed.json')) { $installed = json_decode($this->files->get($path), true); $packages = $installed['packages'] ?? $installed; }
同样的情况也发生在 Laravel5.6.0,它有这个错误,并且在 5.6.40Laravel 5.6.40 PackageManifest.php中被修复。我不知道从哪个次要版本已经修复在每个水平,但我建议去最后一个,如 5.7.29,5.6.40等。或者你可以去看看版本,看看它是否已经修复。
5.6.0
5.6.40
5.7.29
现在作曲家2.0非常非常快。
我有个办法:
不要用 --no-scripts。这将导致问题,并且不会创建文件 PackageManifest.php和其他文件所需的适当文件夹。
--no-scripts
PackageManifest.php
这样您就不会遇到文件中存在 bug 的问题。
试试这个,它是为我工作,在下面的文件:
供应商/laravel/框架/src/Illumination/Foundation/PackageManifest.php
找到这一行并对其进行注释
在上面注释的行后面添加两行新行
这里有一个适合我的解决方案。《 https://github.com/composer/composer/issues/9340#issuecomment-716210369》 更改您的 laravel 框架为6.18.7,以便与作曲家2兼容
如果要在不进行更新和编曲器更新的情况下进行修复
只要转到供应商/作曲家并删除 installed.json
installed.json
我最近切换了 作曲家2.0.8和我的 Laravel 版本是 6.20.27
为了解决这个问题:
删除 compose.lock文件
compose.lock
安装依赖项。
如果错误是在自我更新编曲器之后发生的,只需将 作曲家替换为 作曲家1。 < br/> 只需更改:
composer install ...
变成:
composer1 install ...
只有这个!
如果你有作曲家版本2升级到6.2。
解决这个问题最简单的方法是
从项目中删除 作曲家,锁定文件。
运行 composer install
不需要强制升级您的软件包(不推荐在生产环境下运行 composer update) ,如果您的 Composer 在版本2上,也不需要降级。
如果您的网站需要 Composer v1进行更新(例如,因为 v2会导致错误) ,并且您已经在全球范围内安装了 v2版本,那么最快的解决方案是:
从 https://getcomposer.org/download/下载最新的稳定版1.x 作曲家(手动下载)。
将下载的 作曲家文件放在项目的根目录中(作曲家 Json文件所在的位置)。
使用 作曲家文件运行命令。示例:
php composer.phar install