Laravel Framework 10.15.0
を使用しています。
次の方法で API キーをロードしてみました:
$apiKeyOpenAI = env('OPENAI_API_KEY'); $client = OpenAI::client($apiKeyOpenAI);
私の .env
ファイルでは、API キーが明確に定義されています:
OPENAI_API_KEY=xx-xxxxxxxxxxxxxxxxxxxxxxxx
しかし、サーバー上でアプリケーションを実行すると、$apiKeyOpenAI
が null であることがわかります。
ただし、.env
ファイルには OPENAI_API_KEY があります。確認してみました!
キャッシュをクリアしようとしました php 職人 config:clear
ですが、依然としてエラーが発生します:
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()
私が間違っている点はありますか?
ご返信ありがとうございます。
アップデート
サーバーにデプロイした後、このスクリプトを実行して機能させる必要があります:
Route::get('/clear', function() { Artisan::call('cache:clear'); Artisan::call('config:clear'); return "キャッシュ、構成はクリアされました"; })->ミドルウェア(['auth', 'admin']);
展開時には、このスクリプトも自動的に実行されます:
#!/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 "アプリケーションがデプロイされました!"
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