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

Laravel 10中.env文件API Key无法识别的问题排查

Laravel读取OpenAI API密钥返回null的问题解决

问题分析

使用Laravel 10.15.0时,直接通过env('OPENAI_API_KEY')读取环境变量,在服务器上返回null(.env文件已正确配置密钥),执行php artisan config:clear后仍报错。核心原因:

  • Laravel执行config:cache后,会将所有配置缓存到单个文件中,此时env()函数会失效,无法直接读取.env中的变量。
  • 你的部署脚本先执行php artisan config:cache,后续又执行config:clear,命令顺序混乱导致缓存状态异常,使得env()调用无法获取正确值。

解决方案

1. 规范配置读取方式(推荐)

不要直接在业务代码中使用env(),应将环境变量映射到配置文件:

  1. 在config/目录下创建openai.php文件:
<?php
return [
    'api_key' => env('OPENAI_API_KEY'),
];
  1. 在代码中通过config()函数读取:
$apiKeyOpenAI = config('openai.api_key');
$client = OpenAI::client($apiKeyOpenAI);

这种方式无论是否缓存配置,都能正确获取值,符合Laravel最佳实践。

2. 调整部署脚本的缓存命令顺序

原脚本先缓存再清除的逻辑会打乱缓存状态,建议调整为:

#!/bin/sh
set -e

echo "Deploying application ..."

# 进入维护模式
(php artisan down) || true
    # 更新代码
    git fetch origin deploy
    git reset --hard origin/deploy

    # 安装依赖
    composer install --no-interaction --prefer-dist --optimize-autoloader

    # 数据库迁移
    php artisan migrate --force

    # 清除旧缓存
    php artisan config:clear
    php artisan cache:clear
    php artisan route:clear
    php artisan view:clear
    php artisan auth:clear-resets

    # 生成新缓存
    php artisan config:cache
    php artisan route:cache
    php artisan view:cache

    # 重载PHP-FPM更新opcache
    echo "" | sudo -S service php8.1-fpm reload
# 退出维护模式
php artisan up

echo "Application deployed!"

3. 临时应急方案(仅用于排查)

你添加的路由可临时清除缓存恢复正常:

Route::get('/clear', function() {
    Artisan::call('cache:clear');
    Artisan::call('config:clear');

    return "缓存、配置已清除";
})->middleware(['auth', 'admin']);

内容的提问来源于stack exchange,提问作者Carol.Kar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:10:28