ไม่มีการระบุคีย์การเข้ารหัสแอปพลิเคชัน


255

ฉันใหม่กับ Laravel และฉันพยายามใช้คำสั่ง Artisan ...

php artisan serve

มันแสดง ...

เซิร์ฟเวอร์การพัฒนา Laravel เริ่มทำงานแล้ว: http://127.0.0.1:8000

อย่างไรก็ตามมันจะไม่เปิดโดยอัตโนมัติและเมื่อฉันป้อนhttp://127.0.0.1:8000ด้วยตนเองจะแสดงข้อผิดพลาดนี้:

RuntimeException ไม่มีการระบุคีย์การเข้ารหัสแอปพลิเคชัน

ความคิดใด ๆ ฉันใช้ Laravel framework 5.5-dev


หรือหากไฟล์. env ของคุณจำเป็นต้องเปลี่ยนการอ้างอิง: stackoverflow.com/questions/36276767/…
Nameishi

2
คำตอบด้านล่างถูกต้อง: อย่างไรก็ตามถ้าคุณเรียกใช้ "php artisan เสิร์ฟ" ครั้งแรกและมีเซสชั่นเว็บเซิร์ฟเวอร์ที่ใช้งานอยู่คุณจะต้องรีสตาร์ทเซิร์ฟเวอร์ (ตัวควบคุม -c ใน terminal เพื่อหยุด) เพื่อให้การเปลี่ยนแปลงมีผลหลังจากที่คุณ เพิ่มรหัสลงในไฟล์. env ของคุณ
Chris Adams

คำตอบ:


437

จากการเข้ารหัส - Laravel - กรอบ PHP สำหรับช่างฝีมือเว็บ :

"ก่อนใช้ตัวเข้ารหัสของ Laravel คุณต้องตั้งค่าตัวเลือกคีย์ในไฟล์กำหนดค่าคอนฟิก / app.php ของคุณคุณควรใช้ php artisan key:generateคำสั่งเพื่อสร้างคีย์นี้"

ฉันพบว่าการใช้การสืบค้นอินเทอร์เน็ตที่ซับซ้อนนี้ใน google.com:

"laravel เพิ่มคีย์การเข้ารหัส" (ใช่มันใช้ได้แม้กับการพิมพ์ผิด!)


22
ฉัน googled ข้อผิดพลาดทั้งหมดและไม่มี apeared เพียงตั้งคีย์ encriptyon googled และค้นพบ รู้สึกเหมือนเป็นคนโง่ ขอบคุณ สำหรับใครก็ตามที่มาถึงที่นี่เพียงแค่วิ่ง:php artisan key:generate
Carlos F

ฉันขอโทษที่คุณใส่รหัสช่าง PHP: สร้างใน terminal? เพราะฉันได้รับ ErrorException
Nameishi

1
สำหรับคนอื่นที่พบปัญหาของฉันใส่สิ่งนี้ลงในเทอร์มินัล cp .env.example. env php artisan key: generate
Nameishi

5
php artisan key:generateไม่ทำงานสำหรับฉัน ทำให้ฉันมีข้อผิดพลาดเดียวกันไม่มีการระบุคีย์การเข้ารหัสแอปพลิเคชันโปรดแก้ปัญหาใด ๆ
Oniya Daniel

7
สิ่งนี้ใช้งานได้สำหรับฉัน แต่ฉันต้องเปลี่ยนชื่อไฟล์. env.example เป็น. env ก่อนเพื่อให้สามารถใช้งานได้มิฉะนั้นฉันได้รับข้อผิดพลาด ". env: no file ดังกล่าว"
Webomatik

129

ในกรณีของฉันฉันต้องรีเซ็ตไฟล์กำหนดค่าที่แคชไว้ด้วย:

php artisan key:generate
php artisan config:cache

5
ฉันมักจะเห็นคำตอบนี้หลังจากที่ฉันลืมล้างแคช
vijayrana

3
สิ่งนี้หายไปจากคำตอบทั้งหมด ขอบคุณมาก ๆ ! :)
Aman Alam

1
มีphp artisan config:cacheไว้เพื่ออะไร ทำไมถึงมีประโยชน์
Pathros

2
@Pathros เพื่อสร้าง / สร้างไฟล์กำหนดค่าที่เก็บไว้ใหม่
Leonid

1
นอกจากนี้ก่อนอื่นตรวจสอบให้แน่ใจว่า.envไฟล์ " " ของคุณอย่างน้อยมีตัวเลือกคีย์ว่างเช่น:APP_KEY=
Top-Master

54

เปิด command prompt ในโฟลเดอร์รูทของโปรเจคและรันคำสั่งด้านล่าง:

php artisan key:generate

มันจะสร้าง Application Key สำหรับแอปพลิเคชันของคุณ

คุณสามารถค้นหารหัสแอปพลิเคชันที่สร้างขึ้น (APP_KEY) ใน.envไฟล์


23

เพียงเรียกใช้คำสั่งนี้:

php artisan key:generate

1
ใช่ แต่เซิร์ฟเวอร์โฮสติ้งหลายแห่งไม่มีการเข้าถึงบรรทัดคำสั่งแล้วจะต้องทำอย่างไร?
Dhiraj

2
ส่วนใหญ่รองรับการเชื่อมต่อ ssh จากเทอร์มินัลของคุณรัน ssh yourusername @ server_ip
DJ

21
  1. คัดลอก.env.exampleไปที่.env:

    cp -a .env.example .env

  2. สร้างรหัส:

    php artisan key:generate

  3. เรียกใช้เท่านั้น:

    php artisan serve


อ๊ะ นี่เป็นขั้นตอนสำคัญ! โครงการ Laravel ที่สดใหม่ต้องการไฟล์. env หรือไม่มีอะไรจะใช้งานได้ ขอบคุณอดัม
Eric L.

16

cp .env.example .envหากไม่มีไฟล์. env อยู่ php artisan key:generateคำสั่งใช้งานได้สำหรับฉัน มันสร้างรหัสการเข้ารหัส


4
ล้างแคชโดยใช้php artisan config:cacheคำสั่งหลังจากขั้นตอนข้างต้น
Sabyasachi Ghosh

การล้างแคชส่วนใหญ่จะต้องใช้ในการผลิต / การจัดเตรียม (เว้นแต่คุณต้องการแคชมุมมองระหว่างการพัฒนา)
killstreet

14

ที่จริงฉันต้องเพิ่มไฟล์. envลงในโครงการของฉันแล้วคัดลอกเนื้อหาของ. env.exampleเพื่อให้สามารถใช้key:generateงานได้ ไม่แน่ใจว่าทำไมไฟล์. envไม่ถูกสร้างขึ้นเมื่อฉันเริ่มโครงการ


1
อาจขึ้นอยู่กับวิธีที่คุณติดตั้ง Laravel ... " ในการติดตั้ง Laravel ใหม่ไดเรกทอรีรากของแอปพลิเคชันของคุณจะมี.env.exampleไฟล์หากคุณติดตั้ง Laravel ผ่านผู้แต่งไฟล์ไฟล์นี้จะถูกเปลี่ยนชื่อโดยอัตโนมัติ.envมิฉะนั้นคุณควรเปลี่ยนชื่อ ไฟล์ด้วยตนเอง "- #Environment Configuration
SᴀᴍOnᴇᴌᴀ

นอกจากนี้หากคุณโคลนโครงการจาก repo ที่มีไฟล์. env อยู่ใน. gitignore คุณก็จะต้องสร้างมันขึ้นมาเช่นกัน จาก Laravel docs: 'ไฟล์. env ของคุณไม่ควรผูกมัดกับแหล่งควบคุมแอปพลิเคชันของคุณเนื่องจากผู้พัฒนา / เซิร์ฟเวอร์แต่ละรายที่ใช้แอปพลิเคชันของคุณอาจต้องการการกำหนดค่าสภาพแวดล้อมที่แตกต่างกัน'
Sami El Maameri

ฉันยังพบว่าหากคุณดาวน์โหลดจากคลาวด์ (ฉันใช้ windows) เช่น google-drive, sky-drive เป็นต้นไฟล์. env, .env.example นั้นมีชื่อว่า _env, _env.example เป็นต้นในกรณีที่ฉัน เปลี่ยนชื่อไฟล์ตามนั้นและจากนั้นเพียงแค่เรียกใช้ 'คีย์ช่าง PHP: สร้าง'
ทิโมธีครูเกอร์

11
php artisan key:generate
php artisan config:cache

ทำงานได้สำหรับฉัน แต่ต้องทำใน command prompt บน Windows

การดำเนินการภายในเทอร์มินัลใน PHPStorm ไม่ทำงาน


11

ปัญหาทั่วไปที่คุณอาจพบเมื่อทำงานกับแอปพลิเคชัน Laravel คือข้อยกเว้น:

RuntimeException ไม่มีการระบุคีย์การเข้ารหัสแอปพลิเคชัน

คุณมักพบปัญหานี้เมื่อดึงแอปพลิเคชัน Laravel ที่มีอยู่ลงมาซึ่งคุณคัดลอก.env.exampleไฟล์ไปที่.envแต่ไม่ได้ตั้งค่าสำหรับAPP_KEYตัวแปร

ที่บรรทัดรับคำสั่งให้ใช้คำสั่ง Artisan ต่อไปนี้เพื่อสร้างคีย์:

php artisan key:generate

นี่จะสร้างคีย์สุ่มสำหรับAPP_KEYหลังจาก.envแก้ไขเสร็จแล้วโปรดป้อนคำสั่งนี้ในเทอร์มินัลของคุณเพื่อล้างแคช:php artisan config:cache

นอกจากนี้หากคุณใช้เว็บเซิร์ฟเวอร์เริ่มต้นของ PHP (เช่นphp artisan serve) คุณต้องรีสตาร์ทเซิร์ฟเวอร์เพื่อเปลี่ยน.envค่าไฟล์ของคุณ ตอนนี้คุณจะไม่เห็นข้อความแสดงข้อผิดพลาดนี้


9

เปิด command prompt ในโฟลเดอร์รูทของโปรเจคของคุณและรัน

php artisan key:generate

แล้วก็

php artisan config:cache

และจากนั้น

หากคุณได้รับข้อผิดพลาดเดียวกันหลังจากมีคีย์ - ค่าเพียงคัดลอกค่า APP_KEY จากไฟล์. env แล้ววางลงใน config / app.php ด้วย 'key' => 'Your KEY'

จากนั้นเรียกใช้อีกครั้ง

php artisan config:cache

7

ทำตามขั้นตอนนี้:

  1. php artisan key:generate
  2. php artisan config:cache
  3. php artisan serve

แม้หลังจากสร้างคีย์ใน. env ไฟล์ i ก็เกิดข้อผิดพลาด เมื่อฉันรัน "php artisaan config: cache" มันจะล้างแคชและจากนั้นแก้ไขปัญหาของฉันเท่านั้น ขอบคุณมาก.
Pankaj

6

โอเคฉันจะเขียนคำแนะนำอื่นเพราะไม่พบคำตอบที่ชัดเจนที่นี่ ดังนั้นหากคุณประสบปัญหาดังกล่าวให้ทำตามสิ่งนี้:

  1. เปลี่ยนชื่อหรือคัดลอก / เปลี่ยนชื่อไฟล์. env.exampleในรูทของโปรเจ็กต์ของคุณเป็น. env

คุณไม่ควรสร้างไฟล์. env ที่ว่างเปล่าแต่เติมด้วยเนื้อหาของ. env.example

  1. ในเทอร์มินัลไปที่ไดเรกทอรีรากของโครงการ (ไม่ใช่โฟลเดอร์สาธารณะ) และเรียกใช้

รหัสช่าง PHP: สร้าง

  1. ถ้าทุกอย่างเรียบร้อยการตอบสนองในเทอร์มินัลควรเป็นแบบนี้

คีย์แอปพลิเคชัน [base64: wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA =] ตั้งค่าสำเร็จแล้ว

  1. ตอนนี้เพียงแค่คัดลอกคีย์และวางลงในไฟล์. envของคุณเป็นค่าไปที่ APP_KEY บรรทัดผลลัพธ์ควรมีลักษณะดังนี้:

APP_KEY = base64: wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA =

  1. ในการทำงานของเครื่อง

PHP ช่างตั้งค่า: แคช

แค่นั้นแหละ.


ดังนั้นphp artisan key:generateไม่ได้เพิ่มรหัสลงในไฟล์. env ของคุณโดยอัตโนมัติหรือ
Rwd

ไม่ในกรณีของฉัน
Dmitry Gordienko

4

คุณสามารถสร้างรหัสการเข้ารหัสแอปพลิเคชันโดยใช้คำสั่งนี้:

php artisan key:generate

จากนั้นสร้างไฟล์แคชเพื่อให้โหลดการกำหนดค่าได้เร็วขึ้นโดยใช้คำสั่งนี้:

php artisan config:cache

หรือให้บริการแอปพลิเคชันบนเซิร์ฟเวอร์การพัฒนา PHP โดยใช้คำสั่งนี้:

php artisan serve

แค่นั้นแหละ!


3

หากคุณคอมไพล์โครงการบางอย่างปัญหานี้มักจะเกิดขึ้น

  1. ตรวจสอบให้แน่ใจว่ามี.envไฟล์
  2. เรียกใช้php artisan key:generateแล้วควรสร้างAPP_KEYใน. env
  3. ในที่สุดก็ทำงานphp artisan serveและมันควรจะทำงาน

1

ฉันพบปัญหานี้เมื่อฉันคัดลอกเนื้อหาของโครงการ Laravel ของฉัน (พูดว่า sites / oldname) ลงในไดเรกทอรีใหม่บน Mac ของฉัน (พูด, sites / newname) เนื่องจากฉันลากและวางไฟล์ด้วยตนเองมันจึงไม่คว้าไฟล์ที่ซ่อนอยู่นั่นคือ '.env' เมื่อฉันดูไซต์ / oldname อย่างละเอียดยิ่งขึ้นฉันเห็น. editorconfig, .env, .env.example, .gitatrributes, .styleci.yml เป็นต้น

ข้อผิดพลาดหายไปเมื่อฉันคัดลอกไฟล์ที่ซ่อนไปยังไดเรกทอรีใหม่

ดังนั้น "ไม่ได้ระบุรหัสการเข้ารหัสแอปพลิเคชันแล้ว" คือ Laravel พูดถึง "ไฟล์. env ของคุณหายไป"


0

ฉันต้องรีสตาร์ทผู้ปฏิบัติงานคิวโดยใช้php artisan queue:restartหลังจากทำงานphp artisan key:generateเพื่อให้งานทำงานได้



0

ในกรณีของฉันในขณะที่โคลนโครงการจากคอมไพล์ไม่มี .env

ไฟล์. ดังนั้นฉันจึงคัดลอก.envไฟล์จากโครงการต้นฉบับและวางในโครงการปัจจุบันของฉันและเปลี่ยนการกำหนดค่าฐานข้อมูลและทำงานได้สำเร็จ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.