Laravel Sail安装时Redis类未找到错误的解决求助
解决Laravel Sail安装依赖时Redis类找不到的问题
问题场景
克隆Laravel 10项目并创建.env文件后,执行官方文档提供的Composer安装命令:
docker run --rm \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/var/www/html" \ -w /var/www/html \ laravelsail/php82-composer:latest \ composer install --ignore-platform-reqs
触发post-autoload-dump事件执行php artisan package:discover时,报错Class "Redis" not found,原因是laravelsail/php82-composer镜像默认未安装phpredis扩展。
解决方案
方案1:跳过Composer脚本执行安装
直接在安装命令中添加--no-scripts参数,跳过post-autoload-dump阶段的artisan命令:
docker run --rm \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/var/www/html" \ -w /var/www/html \ laravelsail/php82-composer:latest \ composer install --ignore-platform-reqs --no-scripts
安装完成后,启动Sail容器(容器内已预装phpredis扩展),再手动执行包发现命令:
./vendor/bin/sail up -d ./vendor/bin/sail artisan package:discover
方案2:自定义包含phpredis扩展的Composer镜像
- 在项目根目录创建
Dockerfile:
FROM laravelsail/php82-composer:latest # 安装并启用phpredis扩展 RUN pecl install redis && docker-php-ext-enable redis
- 构建自定义镜像:
docker build -t sail-php82-composer-redis .
- 使用自定义镜像执行Composer安装:
docker run --rm \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/var/www/html" \ -w /var/www/html \ sail-php82-composer-redis \ composer install --ignore-platform-reqs
方案3:直接在Sail容器内执行Composer安装
先初始化并启动Sail容器(容器环境自带所需扩展),再在容器内执行安装:
# 生成Sail配置文件(首次执行) ./vendor/bin/sail install # 启动容器 ./vendor/bin/sail up -d # 在容器内执行Composer安装 ./vendor/bin/sail composer install
内容的提问来源于stack exchange,提问作者Davood Ghanbarpour
相关产品推荐
相关产品推荐

