「Laravel 10 - API キーが .env ファイルで認識されない」
P粉198814372
2023-08-30 11:26:11
<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>
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