90% scout 安装失败源于 laravel 与 scout 版本不匹配;需按 laravel 版本选对应 scout 版本(如 laravel 9 → ^9),并正确注册服务提供者、配置驱动及验证搜索引擎连通性。

装不上 Scout,90% 是因为 Laravel 版本和 laravel/scout 版本不匹配,不是命令写错,也不是网络问题。
确认 Laravel 版本再选 Scout 版本
Scout 不是通用包,每个大版本只适配特定 Laravel 主版本。强行指定高版本会触发 Composer 依赖冲突,报类似 Your requirements could not be resolved 的错误。
- 运行
php artisan --version查当前 Laravel 版本 - Laravel 8 → 必须用
composer require laravel/scout:^8(官方已停止维护,但仍有项目在用) - Laravel 9 → 用
composer require laravel/scout:^9 - Laravel 10 → 用
composer require laravel/scout:^10 - Laravel 11(beta)→ 目前 Scout 尚未发布正式支持,别提前升级
别信“最新版最好”,^10 在 Laravel 9 下一定失败,Composer 会卡在依赖解析阶段,反复重试也没用。
装完后 scout:install 命令不存在?检查服务提供者注册方式
scout:install 是 Scout 10.1+ 新增命令,但它依赖 LaravelScoutScoutServiceProvider 被正确加载。Laravel 9 及更早需手动注册;Laravel 10+ 默认启用包自动发现,但容易被破坏。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Laravel 9 或更早:确认
config/app.php的providers数组里有LaravelScoutScoutServiceProvider::class - Laravel 10+:应删掉这行,靠自动发现;但如果删了之后
php artisan list | grep scout仍看不到命令,说明自动发现失效 - 临时修复:把
LaravelScoutScoutServiceProvider::class加回config/app.php,再运行composer dump-autoload和php artisan config:clear - 常见破坏源:
composer.json中自定义了"autoload": {"psr-4": {}}却没保留"Laravel\Scout\": "vendor/laravel/scout/src/",或执行过composer install --no-plugins
选驱动前先决定要不要外部服务
Scout 本身不提供搜索能力,只是个转发层。你装完 laravel/scout 后,必须立刻选一个实际干活的驱动,否则 search() 方法直接抛异常。
- 想零配置快速验证流程:用内置
collection驱动(仅内存搜索,开发用)——改.env为SCOUT_DRIVER=collection,不用装额外包 - 要中文分词、本地可控:选
meilisearch,装composer require meilisearch/meilisearch-php,再起 Docker 容器 - 要开箱即用、不怕 SaaS 成本:选
algolia,装composer require algolia/algoliasearch-client-php,填好ALGOLIA_APP_ID和ALGOLIA_SECRET - 已有 PostgreSQL 且数据量不大:用
pgsql驱动,装composer require pmatseykanets/laravel-scout-postgres,无需新服务
别跳过这步就急着写 use Searchable,模型加了 trait 却没配 driver,首次 save 就会报 Driver [xxx] not supported。
php artisan scout:import 卡住或报 cURL 错误?先绕过 Scout 看底层连得通不通
Scout 的 import 命令只是把模型数据序列化后交给驱动客户端发出去。报 cURL error 7、Connection refused 或超时,基本和 Scout 无关,是驱动客户端连不上搜索引擎本身。
- 对 MeiliSearch:运行
curl -I http://127.0.0.1:7700/health,返回200 OK才算活。Docker 宿主机访问请换host.docker.internal:7700 - 对 Algolia:用
curl -X GET "https://your-app-id-dsn.algolia.net/1/indexes" -H "X-Algolia-API-Key: your_admin_key" -H "X-Algolia-Application-Id: your-app-id"测试凭证和网络 - 检查
config/scout.php里'host'是否带协议(http://或https://),漏写会导致 PHP stream context 直接拒绝连接 - 环境变量是否真生效?运行
php -r "var_dump(env('MEILISEARCH_HOST'));"确认没被缓存或覆盖
真正容易被忽略的是:Laravel 队列、HTTP 客户端、甚至 php.ini 的 allow_url_fopen 都可能干扰连接。先抛开 Scout,用最简 PHP 脚本直连搜索引擎,通了再回来调 Scout。










