Ala*_*cha 23 php laravel composer-php
我用这个命令更新了作曲家:
composer self-update
Run Code Online (Sandbox Code Playgroud)
它已更新到版本 2.0.4。然后当我尝试使用以下命令启动我的 Laravel 项目时:
php artisan serve
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
In PackageManifest.php line 131:
Undefined index: name
Run Code Online (Sandbox Code Playgroud)
我试着用这个回到旧版本的作曲家:
composer self-update --rollback
Run Code Online (Sandbox Code Playgroud)
作曲家降级到 1.9.3 版,但对错误没有帮助。然后我用这个命令再次更新作曲家:
composer self-update --stable
Run Code Online (Sandbox Code Playgroud)
并且仍然得到同样的错误。
这是 PackageManifest.php 文件的第 131 行:
return [$this->format($package['name']) => $package['extra']['laravel'] ?? []];
Run Code Online (Sandbox Code Playgroud)
cen*_*com 16
问题是 Laravel 默认供应商包之一有一个小错误。
解决此问题的解决方案如下:
rm -rf composer.lock
rm -rf vendor
composer install
Run Code Online (Sandbox Code Playgroud)
这会将 Composer 包更新到您当前版本的 laravel 的最新版本,这应该可以解决问题。
在 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) {
...
Run Code Online (Sandbox Code Playgroud)
这实际上已经在 Laravel 中修复了,所以请确保您将 Laravel 更新到至少 6.18.7+ 或 7.6.0+ 或 8.0+
仅供参考,如果您删除 composer 本地文件,它将更新您的所有依赖项,因此这不是一个好主意。
通过运行该命令composer update laravel/framework应该有望解决问题,而不会导致任何其他问题。如果您无法更新 Laravel,那么您最好使用composer self-update --1.
如果您使用的是illuminate/foundation代替laravel/framework,那么请确保您使用的是composer update illuminate/foundation代替。
小智 5
选项1:
打开vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php
然后搜索代码:
$packages = json_decode($this->files->get($path), true);
Run Code Online (Sandbox Code Playgroud)
插入
$packages = $installed['packages'] ?? $installed;
Run Code Online (Sandbox Code Playgroud)
选项 2:
运行命令
composer update
Run Code Online (Sandbox Code Playgroud)