Laravel có cần tệp .env không?

Gói này giúp bạn quản lý. env cho các môi trường triển khai khác nhau. Mỗi. env được mã hóa an toàn và được giữ trong phần kiểm soát phiên bản ứng dụng của bạn. Khi bạn triển khai ứng dụng của mình, môi trường cụ thể thích hợp. tệp env được giải mã và di chuyển vào vị trí

Điều này một phần được lấy cảm hứng từ gói chứng chỉ xuất sắc của Marcel. Nếu bạn muốn quản lý thông tin đăng nhập của mình trong tệp json, với Laravel xử lý mã hóa/giải mã và chỉ có một môi trường triển khai, gói đó có thể phù hợp hơn với nhu cầu của bạn

Gói của chúng tôi khác nhau theo những cách sau

  1. Chúng tôi muốn làm việc với. env trực tiếp và giải mã. env kết thúc ở nơi mà Laravel đã mong đợi. Ứng dụng này sử dụng. biến env giống như bình thường
  2. Chúng ta cần quản lý. env cho nhiều môi trường [như qa, uat, production]. Gói này cho phép bạn quản lý bất kỳ số lượng môi trường cụ thể nào. tập tin env
  3. Chúng tôi muốn tận dụng các dịch vụ như AWS Key Management Service để xử lý mã hóa/giải mã, với tùy chọn thêm các trình điều khiển mã hóa khác [như ansible] hoặc các dịch vụ quản lý bí mật [như AWS Secrets Manager] trong tương lai

Ghi chú

Laravel v9. 32. 0 đã giới thiệu các lệnh

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
9 và
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
0 mới, xung đột với các lệnh trong gói này. Chúng tôi đã chuyển các lệnh của mình trong v2 sang
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
1 và
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
2

Cài đặt và thiết lập

điều kiện tiên quyết

Nếu bạn định kích hoạt tính năng nén, bạn phải cài đặt và kích hoạt Tiện ích nén Zlib

Cài đặt gói

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
3

Thêm hook của nhà soạn nhạc

trong nhà soạn nhạc của bạn. json thêm

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
4 dưới dạng hook sau khi cài đặt. Bạn có thể đã có phần
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
0, hãy thêm lệnh mới để nó trông như thế này

"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]

Tạo cấu hình [tùy chọn]

Cấu hình mặc định dựa trên các biến môi trường [e. g. trình điều khiển, lưu trữ env, tệp đích, aws, gcp]. Nếu bạn cần tùy chỉnh nó, bạn có thể xuất bản cấu hình bằng cách chạy

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
1

Nhà cung cấp dịch vụ thiết lập [các phiên bản cũ hơn của Laravel]

Nếu bạn đang sử dụng phiên bản Laravel cũ hơn 5. 5, bạn sẽ cần thêm thủ công nhà cung cấp dịch vụ vào tệp

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
2 của mình

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]

Thiết lập cấu hình

Khóa cấu hìnhBiến môi trườngMặc địnhMô tả
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
3ENV_DRIVER_______04Trình điều khiển mặc định.
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
5EDITOR
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
6Trình soạn thảo văn bản ưa thích.
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
7ENV_STORAGE_PATH
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
8Thư mục mà chúng ta nên giữ mã hóa. env files
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
9ENV_DESTINATION_FILE
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
20Đây là nơi chúng tôi sẽ đặt tệp được giải mã. tệp env
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
21ENV_COMPRESSION
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
22Có nên nén dữ liệu trước khi mã hóa không?
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
23AWS_KMS_KEY
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
24ID hoặc bí danh khóa AWS
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
25AWS_KMS_REGION
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
24Một khu vực AWS có khóa.
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
27GOOGLE_KMS_PROJECT, GOOGLE_CLOUD_PROJECT
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
24,
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
24A Mã định danh dự án Google Cloud
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
20GOOGLE_KMS_LOCATION
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
21A Vị trí Google Cloud KMS
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
22GOOGLE_KMS_KEY_RING
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
24A Vòng chìa khóa Google Cloud KMS
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
24GOOGLE_KMS_KEY_______ 124A Khóa Google Cloud KMS

nghị quyết môi trường

Để gói này giải mã đúng. env khi bạn triển khai, bạn cần cho nó biết cách tìm ra môi trường

Theo mặc định, nó sẽ tìm biến môi trường

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
26. Tuy nhiên, bạn có thể cung cấp trình phân giải tùy chỉnh của riêng mình với chức năng gọi lại. Đặt cái này vào phương pháp ________ 228 của ________ 227 của bạn

"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
2

Bằng cách này, bạn có thể giải quyết môi trường dựa trên tên máy chủ, thẻ phiên bản EC2, v.v. Điều này sau đó sẽ giải mã chính xác. env dựa trên tên môi trường mà bạn trả về

Độ phân giải tên khóa

Thông thường, chúng tôi mong đợi tên khóa của bạn được chỉ định trong. tập tin env. Tuy nhiên, bạn có thể muốn chỉ định các khóa khác nhau tùy thuộc vào môi trường. Giả sử, nếu bạn có thiết lập thông tin xác thực AWS IAM bị hạn chế khác nhau cho các môi trường của mình, thì điều này sẽ cho phép bạn đảm bảo từng. tệp env chỉ có thể được giải mã trong môi trường thích hợp

Tất nhiên, thông tin đăng nhập IAM cục bộ của riêng bạn sẽ vẫn cần quyền truy cập đầy đủ vào tất cả các khóa để bạn có thể chỉnh sửa từng khóa. tệp env cục bộ

Để giải quyết tên khóa, hãy cung cấp chức năng gọi lại như thế này

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
2

Lưu ý rằng trình phân giải của bạn sẽ nhận được tên môi trường đã được giải quyết, vì vậy bạn có thể sử dụng tên này để giúp tìm ra tên khóa nào cần trả về

trình điều khiển

Dịch vụ quản lý khóa AWS

AWS KMS là một dịch vụ được quản lý giúp bạn dễ dàng tạo và kiểm soát các khóa mã hóa dùng để mã hóa dữ liệu của mình, đồng thời sử dụng các mô-đun bảo mật phần cứng đã được xác thực FIPS 140-2 để bảo vệ tính bảo mật của các khóa của bạn

Để sử dụng bộ trình điều khiển này

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
29 trong. tập tin env

Trong phần tạo khóa mã hóa của bạn. Đảm bảo rằng người dùng AWS IAM của bạn có quyền

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
90 và
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
91 đối với khóa này

Sao chép Key ID và lưu trữ dưới dạng

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
92 tại địa phương của bạn. tập tin env. Khi bạn thiết lập môi trường cụ thể. env, đảm bảo bao gồm
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
92 này trong mỗi tệp. tập tin env

Dịch vụ quản lý khóa đám mây của Google

Google KMS quản lý an toàn các khóa mã hóa và bí mật trên Google Cloud Platform. Tích hợp Google KMS với Google HSM giúp dễ dàng tạo khóa được bảo vệ bởi thiết bị FIPS 140-2 Cấp 3

Để sử dụng bộ trình điều khiển này

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
94 trong. tập tin env

Trong Google Cloud Console, hãy tạo vòng chìa khóa và chìa khóa của bạn. Đảm bảo người dùng Google IAM của bạn có vai trò

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
95 cho khóa này

Sao chép Project, Key Ring và Key lưu trữ chúng dưới dạng

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
96,
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
97 và
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
98 tại địa phương của bạn. tập tin env. Khi bạn thiết lập môi trường cụ thể. env, đảm bảo bao gồm các khóa này trong mỗi tệp. tập tin env

Cách sử dụng

Tạo/chỉnh sửa một. tập tin env

Chạy

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
99 trong đó
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
00 là môi trường bạn muốn tạo hoặc chỉnh sửa. Thao tác này sẽ mở tệp trong
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
6 để bạn chỉnh sửa. Sửa đổi nội dung nào đó trong tệp, lưu và thoát

Sử dụng biến môi trường

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
02 để đặt trình chỉnh sửa ưa thích của bạn

giải mã của bạn. env

Bây giờ bạn có thể chạy

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
03 sẽ giải mã tệp bản mã mà bạn đã chỉnh sửa và ghi bản rõ vào
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
20 của bạn, thay thế bất kỳ thứ gì có trong đó. Bây giờ nếu bạn nhìn vào
"scripts": {
        "post-install-cmd": [
            ...
            "php artisan env:fetch"
        ]
20 của mình, bạn sẽ thấy phần chỉnh sửa của mình

Nếu không có môi trường

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
00 nào được cung cấp, môi trường sẽ được xác định bởi lệnh gọi lại độ phân giải tùy chỉnh của riêng bạn hoặc biến môi trường
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
26

Mã hóa và lưu hiện tại của bạn. env

Đôi khi bạn có thể muốn lấy hiện tại của bạn. env và mã hóa chính xác nguyên trạng

Chạy

'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
08 để thực hiện việc này, trong đó
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
09 là tên của tệp môi trường được mã hóa mà bạn muốn tạo. Nếu bạn không cung cấp tên, tên môi trường
'providers' => [
    ...
    STS\EnvSecurity\EnvSecurityServiceProvider::class,
]
26 hiện tại của bạn sẽ được sử dụng

triển khai đầu tiên

Khi bạn đang đọc qua phần này, có lẽ bạn đang thắc mắc triển khai ban đầu đầu tiên sẽ hoạt động như thế nào. Để gói này giải mã được. env config nơi lưu trữ tất cả thông tin đăng nhập nhạy cảm của bạn, nó cần thông tin đăng nhập tài khoản có quyền đối với khóa KMS của bạn

Công dụng của cái ..... là gì. env trong Laravel?

Mặc định của Laravel. env chứa một số giá trị cấu hình phổ biến có thể khác nhau tùy thuộc vào việc ứng dụng của bạn đang chạy cục bộ hay trên máy chủ web sản xuất . Các giá trị này sau đó được lấy từ các tệp cấu hình Laravel khác nhau trong thư mục cấu hình bằng hàm env của Laravel.

cái gì là. tập tin env cho?

tệp env để chứa các khóa cơ sở dữ liệu phát triển và một tệp khác chứa các khóa cơ sở dữ liệu sản xuất ]. Để tóm tắt,. tệp env chứa thông tin xác thực ở định dạng khóa-giá trị cho các dịch vụ được sử dụng bởi chương trình mà chúng đang xây dựng. Chúng có nghĩa là được lưu trữ cục bộ và không được tải lên kho lưu trữ mã trực tuyến để mọi người đọc.

tôi có nên sử dụng. sản xuất env?

Sử dụng các biến môi trường là một phương pháp hơi phổ biến trong quá trình Phát triển nhưng thực tế không phải là một phương pháp lành mạnh để sử dụng với Sản xuất . Mặc dù có một số lý do giải thích cho điều này, nhưng một trong những lý do chính là việc sử dụng biến môi trường có thể gây ra sự tồn tại không mong muốn của các giá trị biến.

Làm cách nào để hạn chế tệp env trong Laravel?

Cách bảo vệ. .
Bước chân. 1 đi đến trong dự án của bạn và mở. htaccess
Bước chân. 2 Sau đó viết mã này vào. tập tin htaccess
Bước chân. 3 Sau khi lưu, bạn đã chạy mã này trong thiết bị đầu cuối của mình. nghệ nhân php c. bộ đệm. Sau khi bạn có thể kiểm tra www. yourproject_name/. env, Sau đó, bạn sẽ nhận được như thế này. Tôi hy vọng nó sẽ hoạt động bình thường

Chủ Đề