php - Laravel 5.5 自动发现未注册

标签 php laravel laravel-5 laravel-backup

我正在安装 spatie\laravel-backup 包。根据说明,我只需要 composer require spatie\laravel-backup 即可识别并自动安装包。看起来是这样的:

Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: spatie/laravel-backup

但是在 /config/app.php 中没有提到 backup 在供应商的任何地方,以及预期的 /config/backup.php 未找到配置文件。

是否需要发出任何其他命令来完成自动发现?

最佳答案

But looking in /config/app.php there's no mention of backup anywhere in the providers, and the expected /config/backup.php configuration file isn't found.

Laravel 5.5 在发现包时不会修改你的配置文件。当手动注册包的服务时,我们只需要将服务提供者条目和外观别名添加到config/app.php

包发现通过读取 vendor/composer/installed.json 来查找可自动加载的包。然后它保存一个缓存的 list 文件,应用程序在启动时读取该文件以加载包提供程序和别名(通常在 bootstrap/cache/packages.php 中)。

我们可以通过运行重新加载这个缓存的包 list 文件:

php artisan package:discover

包发现发布包的 Assets ,例如您描述的配置文件。开发人员必须显式运行 vendor:publish 命令:

php artisan vendor:publish --provider='Spatie\Backup\BackupServiceProvider'

此限制是设计使然。 Laravel 无法知道开发者是否想要发布一个包的组件,因为在很多情况下,包提供可选组件,开发者可以选择发布哪些组件。

关于php - Laravel 5.5 自动发现未注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46877662/

相关文章:

PHP - Twilio SMS MySQL 多个号码 - 仅发送到第一行

mysql - 如何使用 Laravel 和 MySQL 处理三个或更多类的多对多关系

Laravel 5 - 更改默认日志位置,将日志文件移至应用程序之外

laravel-5 - Laravel 5.5 和 CKEditor 选项

php - Laravel 异步请求最佳实践

php - Symfony 5.2.3 接口(interface)类型提示

javascript - JQuery Ajax 文件上传在客户端浏览器上无法正常工作

php - JSON数组转PHP/MySQL JSON.parse JSON.stringify如何存储双引号和单引号

php - Laravel Eloquent,只选择存在关系的行

php - SQLSTATE[HY000] [2003] 无法连接到 MySQL 服务器,出现 '127.0.0.1' (61) 错误 Laravel 4.1