"Laravel 10 - kunci API tidak dikenali dalam fail .env"
P粉198814372
P粉198814372 2023-08-30 11:26:11
0
1
510
<p>Saya menggunakan <code>Laravel Framework 10.15.0</code>. </p> <p>Saya cuba memuatkan kunci API saya dengan cara berikut: </p> <pre class="brush:php;toolbar:false;">$apiKeyOpenAI = env('OPENAI_API_KEY'); $client = OpenAI::client($apiKeyOpenAI);</pre> <p>Dalam fail <code>.env</code> saya, kunci API ditakrifkan dengan jelas: </p> <p><kod>OPENAI_API_KEY=xx-xxxxxxxxxxxxxxxxxxxxxxxx</code></p> <p>Walau bagaimanapun, apabila melaksanakan aplikasi saya pada pelayan, saya mendapat bahawa <kod>$apiKeyOpenAI</code> </p> <p>Walau bagaimanapun, saya mempunyai OPENAI_API_KEY dalam fail <kod>.env</code>Saya telah menyemaknya! </p> <p>Saya cuba mengosongkan cache <code>php artisan config:clear </code> tetapi saya masih mendapat ralat: </p> <pre class="brush:php;toolbar:false;">TypeError OpenAI::client(): Argumen #1 ($apiKey) mestilah daripada jenis rentetan, batal diberikan, dipanggil dalam /var/www/demo-website/app/Console/Commands/AdminCommand.php pada baris 151 di vendor/openai-php/client/src/OpenAI.php:13 9▕{ 10▕ /**11▕ * Mencipta Klien AI Terbuka baharu dengan token API yang diberikan. 12▕*/ ➜ 13▕ klien fungsi statik awam(rentetan $apiKey, rentetan $organisasi = null): Pelanggan 14▕{ 15▕ kembalikan diri::kilang() 16▕ ->denganApiKey($apiKey) 17▕ ->denganOrganisasi($organisasi) 1 apl/Console/Commands/AdminCommand.php:151 OpenAI::client() 2 app/Console/Commands/AdminCommand.php:39 AppConsoleCommandsAdminCommand::generateContentUsingOpenAI()</pre> <p>Ada cadangan apa yang saya lakukan salah? </p> <p>Terima kasih atas balasan anda! </p> <p><strong>Kemas kini</strong></p> <p>Selepas digunakan ke pelayan, saya perlu menjalankan skrip ini untuk menjadikannya berfungsi: </p> <pre class="brush:php;toolbar:false;">Route::get('/clear', function() { Artisan::call('cache:clear'); Artisan::call('config:clear'); kembalikan "Cache, Config dikosongkan"; })->perisian tengah(['auth', 'admin']);</pre> <p>Pada penggunaan, skrip ini juga akan dijalankan secara automatik: </p> <pre class="brush:php;toolbar:false;">#!/bin/sh set -e bergema "Mengedarkan aplikasi ..." # Masukkan mod penyelenggaraan (php artisan turun) || # Kemas kini pangkalan kod git fetch origin deploy git reset --hard origin/deploy # Pasang kebergantungan berdasarkan fail kunci komposer install --no-interaction --prefer-dist --optimize-autoloader #Migrasi pangkalan data php artisan migrate --force # Nota: Jika anda menggunakan pekerja baris gilir, ini adalah tempat untuk memulakan semula mereka. #... # Kosongkan cache # php artisan optimize php artisan config:cache php artisan route: clear php artisan route:cache php artisan view:clear php artisan view:cache php artisan auth:clear-reset php artisan cache:clear php artisan config: clear #Generate sitemap # php artisan sitemap:generate # Muat semula PHP untuk mengemas kini opcache echo "". sudo -S service php8.1-fpm reload # Keluar dari mod penyelenggaraan php artisan up bergema "Aplikasi digunakan!"</pre></p>
P粉198814372
P粉198814372

membalas semua(1)
P粉317679342

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

Tambah kunci pada mana-mana fail lain dalam direktori config/app.php(或config/:

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

Kemudian, apabila anda ingin menggunakan kunci ini, gunakan fungsi config()helper:

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

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

Sila rujuk dokumentasi untuk butiran:

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!