You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

Reverb部署错误

  • 本地.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

解决方案

  1. 补充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 }}
  1. 确保广播驱动配置一致
    检查生产环境的.env文件(或GitHub Secrets)中BROADCAST_CONNECTION是否为reverb,避免因环境变量缺失导致框架 fallback 到Pusher驱动。

  2. 调整composer install命令
    可以在composer install前先清除配置缓存,避免旧缓存影响:
    修改Install PHP dependencies步骤的run命令:

php artisan config:clear && composer install --no-dev --prefer-dist --optimize-autoloader
  1. 确认Secrets配置
    在GitHub仓库的Settings -> Secrets and variables -> Actions中,确保REVERB_APP_ID、REVERB_APP_KEY、REVERB_APP_SECRET已正确添加,且值与本地.env一致。

内容的提问来源于stack exchange,提问作者AlionaC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:07:32