検索

ホームページ  >  に質問  >  本文

「Laravel 10 - API キーが .env ファイルで認識されない」

<p><code>Laravel Framework 10.15.0</code> を使用しています。 </p> <p>次の方法で API キーをロードしてみました: </p> <pre class="brush:php;toolbar:false;">$apiKeyOpenAI = env('OPENAI_API_KEY'); $client = OpenAI::client($apiKeyOpenAI);</pre> <p>私の <code>.env</code> ファイルでは、API キーが明確に定義されています: </p> <p><code>OPENAI_API_KEY=xx-xxxxxxxxxxxxxxxxxxxxxxxx</code></p> <p>しかし、サーバー上でアプリケーションを実行すると、<code>$apiKeyOpenAI</code> が null であることがわかります。 </p> <p>ただし、<code>.env</code> ファイルには OPENAI_API_KEY があります。確認してみました! </p> <p>キャッシュをクリアしようとしました <code>php 職人 config:clear </code> ですが、依然としてエラーが発生します: </p> <pre class="brush:php;toolbar:false;">TypeError OpenAI::client(): 引数 #1 ($apiKey) は文字列型である必要があり、null が指定され、/var/www/demo-website/app/Console/Commands/AdminCommand.php の 151 行目で呼び出されます。 ベンダー/openai-php/client/src/OpenAI.php:13 にあります。 9▕{ 10▕ /**11▕ * 指定された API トークンを使用して新しい Open AI クライアントを作成します。 12▕*/ ➜ 13▕ public static function client(string $apiKey, string $organization = null): クライアント 14▕{ 15▕ return self::factory() 16▕ ->withApiKey($apiKey) 17▕ ->withOrganization($organization) 1 アプリ/コンソール/コマンド/AdminCommand.php:151 OpenAI::client() 2 アプリ/コンソール/コマンド/AdminCommand.php:39 App\Console\Commands\AdminCommand::generateContentUsingOpenAI()</pre> <p>私が間違っている点はありますか? </p> <p>ご返信ありがとうございます。 </p> <p><strong>アップデート</strong></p> <p>サーバーにデプロイした後、このスクリプトを実行して機能させる必要があります: </p> <pre class="brush:php;toolbar:false;">Route::get('/clear', function() { Artisan::call('cache:clear'); Artisan::call('config:clear'); return "キャッシュ、構成はクリアされました"; })->ミドルウェア(['auth', 'admin']);</pre> <p>展開時には、このスクリプトも自動的に実行されます: </p> <pre class="brush:php;toolbar:false;">#!/bin/sh セット -e echo "アプリケーションをデプロイしています..." # メンテナンスモードに入る (php 職人ダウン) || true # コードベースを更新する git fetch オリジン デプロイ gitリセット --ハードオリジン/デプロイ # ロックファイルに基づいて依存関係をインストールします Composer install --no-interaction --prefer-dist --optimize-autoloader #データベースの移行 php 職人移行 --force # 注: キュー ワーカーを使用している場合は、ここがキュー ワーカーを再起動する場所です。 #... # キャッシュの消去 # php 職人の最適化 php 職人設定:キャッシュ php職人ルート:クリア php 職人ルート:キャッシュ php 職人ビュー:クリア php 職人ビュー:キャッシュ php 職人認証:clear-resets PHPアルティザンキャッシュ:クリア php 職人設定: クリア #サイトマップを生成する # php 職人サイトマップ:生成 # PHP をリロードして opcache を更新します echo "" | sudo -S サービス php8.1-fpm リロード # メンテナンスモードを終了する php 職人アップ echo "アプリケーションがデプロイされました!" </pre></p>
P粉198814372P粉198814372441日前520

全員に返信(1)返信します

  • P粉317679342

    P粉3176793422023-08-31 00:38:30

    config/*.php ファイルの外で env() を使用しないでください。 php 職人 config:cache を実行すると (通常は運用環境で実行する必要があります)、env() はこれらのファイルの外では動作しなくなります (ほとんどの場合、 env キーは引き続きロードできますが、これはほとんどの Laravel セットアップでは一般的ではありません)。これが、env()null を返さないように php 職人 config:clear を実行する必要がある理由です。

    config/app.php (または config/ ディレクトリ内の他のファイル) にキーを追加します:

    リーリー

    次に、このキーを使用する場合は、config()ヘルパー関数を使用します:

    リーリー

    注: app はファイル名、open_ai_api_key は配列のインデックスです。 config/services.php などの別のファイルを使用する場合は、config('services.open_ai_api_key')

    を使用する必要があります。

    詳細については、ドキュメントを参照してください:

    https://laravel.com/docs/10.x/configuration#configuration-caching

    返事
    0
  • キャンセル返事