GitHub Actions部署Laravel Reverb时Composer安装报错:auth_key为null
Laravel Reverb(Pusher驱动)部署时GitHub Actions中composer install失败
报错信息:
Pusher\Pusher::__construct(): Argument #1 ($auth_key) must be of type string, null given

- 本地.env配置正常,开发环境运行无问题
- 跳过composer install会导致依赖缺失,应用无法运行
- 已尝试执行
config:clear、cache:clear、composer dump-autoload等操作 - 重新安装
@laravel/echo、@laravel/reverb及相关包未解决问题
本地.env配置
APP_NAME="Chat System" APP_ENV=local APP_KEY=xxx APP_DEBUG=true APP_URL=https://chatinterno.test APP_LOCALE=en APP_FALLBACK_LOCALE=en APP_FAKER_LOCALE=en_US APP_MAINTENANCE_DRIVER=file # APP_MAINTENANCE_STORE=database PHP_CLI_SERVER_WORKERS=4 BCRYPT_ROUNDS=12 LOG_CHANNEL=stack LOG_STACK=single LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=xxx DB_USERNAME=root DB_PASSWORD=xxx SESSION_DRIVER=database SESSION_LIFETIME=120 SESSION_ENCRYPT=false SESSION_PATH=/ SESSION_DOMAIN=null BROADCAST_CONNECTION=reverb FILESYSTEM_DISK=localn QUEUE_CONNECTION=database CACHE_STORE=database # CACHE_PREFIX= MEMCACHED_HOST=127.0.0.1 REDIS_CLIENT=phpredis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_SCHEME=null MAIL_HOST=sandbox.smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=xxx MAIL_PASSWORD=xxx MAIL_FROM_ADDRESS="no-reply@ixx.com" MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false VITE_APP_NAME="${APP_NAME}" BROADCAST_DRIVER=reverb PUSHER_APP_ID=xxxx PUSHER_APP_KEY=xxxx PUSHER_APP_SECRET=xxxx PUSHER_HOST= PUSHER_PORT=443 PUSHER_SCHEME="https" PUSHER_APP_CLUSTER="eu" #VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_APP_KEY=xxx VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" #VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" VITE_PUSHER_APP_CLUSTER="eu" REVERB_APP_ID=xxx REVERB_APP_KEY=xxxx REVERB_APP_SECRET=xxx REVERB_HOST=chatinterno.test REVERB_PORT=8080 REVERB_SCHEME=http VITE_REVERB_APP_KEY="${REVERB_APP_KEY}" VITE_REVERB_HOST="${REVERB_HOST}" VITE_REVERB_PORT="${REVERB_PORT}" VITE_REVERB_SCHEME="${REVERB_SCHEME}"
GitHub Actions配置
name: Deploy to production on: push: branches: - main jobs: build-and-deploy: name: Build and deploy runs-on: ubuntu-latest steps: - name: Get latest code uses: actions/checkout@v4 - name: Upload project files uses: SamKirkland/FTP-Deploy-Action@4.1.0 with: server: ${{ vars.PROD_FTP_HOST }} username: ${{ secrets.PROD_FTP_USERNAME }} password: ${{ secrets.PROD_FTP_PASSWORD }} protocol: ftp #dry-run: true - name: Set up PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' - name: Install PHP dependencies run: composer install --no-dev --prefer-dist --optimize-autoloader env: PUSHER_APP_ID: ${{ secrets.PUSHER_APP_ID }} PUSHER_APP_KEY: ${{ secrets.PUSHER_APP_KEY }} PUSHER_APP_SECRET: ${{ secrets.PUSHER_APP_SECRET }} PUSHER_APP_CLUSTER: ${{ secrets.PUSHER_APP_CLUSTER }} - name: Use Node.js 20 uses: actions/setup-node@v4 with: node-version: '20' - name: Build project run: | npm install npm run build - name: Upload build files uses: SamKirkland/FTP-Deploy-Action@4.1.0 with: server: ${{ vars.PROD_FTP_HOST }} username: ${{ secrets.PROD_FTP_USERNAME }} password: ${{ secrets.PROD_FTP_PASSWORD }} protocol: ftp local-dir: ./public/build/ server-dir: ./public/build/ dangerous-clean-slate: false dry-run: false
解决方案
- 补充Reverb环境变量
GitHub Actions中仅传入了Pusher相关变量,但你的广播连接是reverb,package:discover时会加载Reverb服务提供者,需要同时传入Reverb的环境变量:
在Install PHP dependencies步骤的env中添加:
REVERB_APP_ID: ${{ secrets.REVERB_APP_ID }} REVERB_APP_KEY: ${{ secrets.REVERB_APP_KEY }} REVERB_APP_SECRET: ${{ secrets.REVERB_APP_SECRET }}
确保广播驱动配置一致
检查生产环境的.env文件(或GitHub Secrets)中BROADCAST_CONNECTION是否为reverb,避免因环境变量缺失导致框架 fallback 到Pusher驱动。调整composer install命令
可以在composer install前先清除配置缓存,避免旧缓存影响:
修改Install PHP dependencies步骤的run命令:
php artisan config:clear && composer install --no-dev --prefer-dist --optimize-autoloader
- 确认Secrets配置
在GitHub仓库的Settings -> Secrets and variables -> Actions中,确保REVERB_APP_ID、REVERB_APP_KEY、REVERB_APP_SECRET已正确添加,且值与本地.env一致。
内容的提问来源于stack exchange,提问作者AlionaC
相关产品推荐
相关产品推荐

