"Laravel 10 - Clé API non reconnue dans le fichier .env"
P粉198814372
2023-08-30 11:26:11
<p>J'utilise <code>Laravel Framework 10.15.0</code>. </p>
<p>J'ai essayé de charger ma clé API de la manière suivante : </p>
<pre class="brush:php;toolbar:false;">$apiKeyOpenAI = env('OPENAI_API_KEY');
$client = OpenAI::client($apiKeyOpenAI);</pre>
<p>Dans mon fichier <code>.env</code>, la clé API est clairement définie : </p>
<p><code>OPENAI_API_KEY=xx-xxxxxxxxxxxxxxxxxxxxxxxx</code></p>
<p>Cependant, lors de l'exécution de mon application sur le serveur, j'obtiens que <code>$apiKeyOpenAI</code> </p>
<p>Cependant, j'ai OPENAI_API_KEY dans mon fichier <code>.env</code>Je l'ai vérifié ! </p>
<p>J'ai essayé de vider le cache <code>php artisan config:clear </code> mais j'obtiens toujours l'erreur : </p>
<pre class="brush:php;toolbar:false;">TypeError
OpenAI::client() : l'argument n°1 ($apiKey) doit être de type chaîne, null donné, appelé dans /var/www/demo-website/app/Console/Commands/AdminCommand.php à la ligne 151
sur supplier/openai-php/client/src/OpenAI.php:13
9▕{
10▕ /**11▕ * Crée un nouveau client Open AI avec le jeton API donné.
12▕*/
➜ 13▕ client de fonction statique publique (string $apiKey, string $organization = null) : Client
14▕{
15▕ retourner self::factory()
16▕ ->avecApiKey($apiKey)
17▕ ->avecOrganisation($organisation)
1 application/Console/Commands/AdminCommand.php:151
OpenAI :: client ()
2 application/Console/Commands/AdminCommand.php:39
AppConsoleCommandsAdminCommand::generateContentUsingOpenAI()</pre>
<p>Des suggestions sur ce que je fais mal ? </p>
<p>Merci pour votre réponse ! </p>
<p><strong>Mise à jour</strong></p>
<p>Après le déploiement sur le serveur, je dois exécuter ce script pour le faire fonctionner : </p>
<pre class="brush:php;toolbar:false;">Route::get('/clear', function() {
Artisan::call('cache:clear');
Artisan::call('config:clear');
return "Cache, la configuration est effacée";
})->middleware(['auth', 'admin']);</pre>
<p>Lors du déploiement, ce script s'exécutera également automatiquement : </p>
<pre class="brush:php;toolbar:false;">#!/bin/sh
définir -e
echo "Déploiement de l'application..."
# Entrez en mode maintenance
(artisan php en panne) || vrai
# Mettre à jour la base de code
git fetch origin déployer
git reset --hard origin/déploiement
# Installer les dépendances en fonction du fichier de verrouillage
composer install --no-interaction --prefer-dist --optimize-autoloader
#Migrer la base de données
php artisan migrer --force
# Remarque : Si vous utilisez des files d'attente, c'est ici que vous pouvez les redémarrer.
#...
# Vider le cache
# php artisan optimiser
configuration artisanale php : cache
route artisanale php : effacer
route artisanale php: cache
vue artisan php : effacer
vue artisan php: cache
authentification artisan php : effacer les réinitialisations
Cache artisanal php : effacer
configuration artisan php : effacer
#Générer un plan du site
# plan du site artisan php : générer
# Recharger PHP pour mettre à jour opcache
echo "" | sudo -S service php8.1-fpm rechargement
# Quitter le mode maintenance
artisan php en place
echo "Application déployée !"</pre></p>
Dans
config/*.php
文件之外不要使用env()
。如果你曾经运行过php artisan config:cache
(通常应该在生产环境中进行),那么env()
将停止在这些文件之外工作(对于大多数情况来说;env
键仍然可以加载,但这对于大多数Laravel设置来说并不典型)。这就是为什么你需要运行php artisan config:clear
才能使env()
不返回null
raisons.Ajoutez une clé à n'importe quel autre fichier du répertoire
config/app.php
(或config/
:Ensuite, lorsque vous souhaitez utiliser cette clé, utilisez la fonction
config()
helper :Attention :
app
是文件名,open_ai_api_key
是数组索引。如果你使用了不同的文件,比如config/services.php
,那么应该使用config('services.open_ai_api_key')
Veuillez vous référer à la documentation pour plus de détails :
https://laravel.com/docs/10.x/configuration#configuration-caching