„Laravel 10 – API-Schlüssel in .env-Datei nicht erkannt'
P粉198814372
P粉198814372 2023-08-30 11:26:11
0
1
397

Ich verwende Laravel Framework 10.15.0.

Ich habe versucht, meinen API-Schlüssel auf folgende Weise zu laden:

$apiKeyOpenAI = env('OPENAI_API_KEY'); $client = OpenAI::client($apiKeyOpenAI);

In meiner Datei .env ist der API-Schlüssel klar definiert:

OPENAI_API_KEY=xx-xxxxxxxxxxxxxxxxxxxxxxxx

Wenn ich jedoch meine Anwendung auf dem Server ausführe, erhalte ich, dass $apiKeyOpenAI null ist.

Allerdings habe ich OPENAI_API_KEY in meiner .env-Datei.Ich habe es überprüft!

Ich habe versucht, den Cache zu leeren php artisan config:clear aber ich erhalte immer noch die Fehlermeldung:

TypeError OpenAI::client(): Argument Nr. 1 ($apiKey) muss vom Typ string sein, null gegeben, aufgerufen in /var/www/demo-website/app/Console/Commands/AdminCommand.php in Zeile 151 unter Vendor/openai-php/client/src/OpenAI.php:13 9▕{ 10▕ /**11▕ * Erstellt einen neuen Open AI Client mit dem angegebenen API-Token. 12▕*/ ➜ 13▕ öffentliche statische Funktion client(string $apiKey, string $organization = null): Client 14▕{ 15▕ return self::factory() 16▕ ->withApiKey($apiKey) 17▕ ->withOrganization($organization) 1 app/Console/Commands/AdminCommand.php:151 OpenAI::client() 2 app/Console/Commands/AdminCommand.php:39 AppConsoleCommandsAdminCommand::generateContentUsingOpenAI()

Irgendwelche Vorschläge, was ich falsch mache?

Vielen Dank für Ihre Antwort!

Update

Nach der Bereitstellung auf dem Server muss ich dieses Skript ausführen, damit es funktioniert:

Route::get('/clear', function() { Artisan::call('cache:clear'); Artisan::call('config:clear'); return „Cache, Konfiguration wurde gelöscht“; })->middleware(['auth', 'admin']);

Bei der Bereitstellung wird dieses Skript auch automatisch ausgeführt:

#!/bin/sh set -e echo „Anwendung wird bereitgestellt ...“ # Wartungsmodus aufrufen (php artisan down) || # Codebasis aktualisieren Git Fetch Origin Deployment git reset --hard origin/deploy # Installieren Sie Abhängigkeiten basierend auf der Sperrdatei Composer-Installation --no-interaction --prefer-dist --optimize-autoloader #Datenbank migrieren php artisan migrate --force # Hinweis: Wenn Sie Warteschlangenarbeiter verwenden, können Sie diese hier neu starten. #... # Cache leeren # PHP-Handwerker optimieren php artisan config:cache PHP-Artisan-Route:klar php artisan route:cache PHP-Artist-Ansicht: klar PHP-Artist-Ansicht:Cache php artisan auth:clear-resets PHP-Artisan-Cache: klar php artisan config:clear #Sitemap generieren # php artisan sitemap:generieren # PHP neu laden, um Opcache zu aktualisieren echo „“ |. sudo -S service php8.1-fpm reload # Wartungsmodus verlassen PHP-Artist up echo "Anwendung bereitgestellt!"

P粉198814372
P粉198814372

Antworte allen (1)
P粉317679342

config/*.php文件之外不要使用env()。如果你曾经运行过php artisan config:cache(通常应该在生产环境中进行),那么env()将停止在这些文件之外工作(对于大多数情况来说;env键仍然可以加载,但这对于大多数Laravel设置来说并不典型)。这就是为什么你需要运行php artisan config:clear才能使env()不返回null的原因。

config/app.php(或config/目录下的任何其他文件)中添加一个键:

'open_ai_api_key' => env('OPENAI_API_KEY', null)

然后,当你想要使用这个键时,使用config()辅助函数:

$apiKeyOpenAI = config('app.open_ai_api_key'); $client = OpenAI::client($apiKeyOpenAI);

注意:app是文件名,open_ai_api_key是数组索引。如果你使用了不同的文件,比如config/services.php,那么应该使用config('services.open_ai_api_key')

详细信息请参阅文档:

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

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!