Làm cách nào để đưa tệp .ENV vào PHP?

Các lọ ENV giúp tạo và định hình môi trường nơi mã chạy. Đó là một thực hành hiện đại tốt

Vấn đề

Bạn rất có thể chạy ít nhất hai môi trường của Ứng dụng của mình. Một cục bộ để phát triển và một ở đây trên fortrabbit để sản xuất. Cả hai trường hợp có thể có quyền truy cập vào cơ sở dữ liệu. Tất nhiên, MySQL cục bộ của bạn có thông tin đăng nhập khác với thông tin đăng nhập từ xa. Tệp cấu hình của bạn, lưu trữ thông tin này, nằm dưới sự kiểm soát của phiên bản Git. Vậy làm thế nào để đối phó với các cấu hình dành riêng cho môi trường khác nhau?

Dung dịch

Mọi thứ cụ thể cho môi trường phải được lưu trữ trong Biến môi trường hoặc "Vars ENV" ngắn

Giới thiệu về lọ ENV

Một ENV var là một cặp giá trị khóa, như vậy.

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
8. Các biến này, như bạn hy vọng bây giờ có thể đoán được, được lưu trữ cụ thể cho mỗi môi trường. Các lọ ENV có khả năng được lưu trữ ở nhiều nơi. Đây là cách bạn có thể xác định biến ENV với cấu hình Apache


   SetEnv MY_SQL_PASS sCRAmblEDegGGs

Đây là một ví dụ cơ bản về cách bạn có thể làm điều đó tại địa phương. Trong hầu hết các trường hợp, bạn sẽ không cần chạm vào cấp độ đó tại đây. Vui lòng đọc tiếp để biết thêm cách sử dụng và cách thực hiện trên fortrabbit

ENV vars trong PHP hiện đại

Bạn có thể truy cập các lọ ENV từ PHP. Và đó là một phương pháp hay nhất thường được phổ biến rộng rãi để làm điều đó

Các. tập tin env

Xử lý cài đặt máy chủ không thuận tiện cho nhiều nhà phát triển. Vì vậy, cộng đồng Ruby đã tìm ra định dạng tệp

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
9. Đây là một tệp cấu hình đơn giản với 30 cặp
echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
0, dễ viết bởi con người và không phụ thuộc vào thời gian chạy. Tất cả những gì bạn cần là một thư viện trình phân tích cú pháp, đọc tệp và làm cho các vars có thể truy cập được từ cơ sở mã của bạn

PHP dotenv

Khái niệm tệp

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
9 đã trở nên khá phổ biến và có cổng cho tất cả các ngôn ngữ. Dưới đây là những cái phổ biến nhất cho PHP

  • github. com/vlucas/phpdotenv
  • github. com/symfony/dotenv

Các khung công tác PHP hiện đại — Laravel, Symfony…] và CMS [Craft] sử dụng cái này hay cái kia dưới mui xe

Các lọ ENV trên fortrabbit

Tóm tắt lại. Các lọ ENV là môi trường cụ thể. Vì vậy, do đó, tệp

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
9 sẽ KHÔNG được triển khai cho Ứng dụng fortrabbit của bạn. Nó thường bị loại khỏi theo dõi trong Git

Bây giờ, ứng dụng fortrabbit của bạn nên biết về các lọ ENV của nó như thế nào? . Đó không phải là cách nó hoạt động. Ứng dụng fortrabbit có các lọ ENV được đặt trực tiếp với máy chủ. Những thứ đó có thể được đặt trong Bảng điều khiển với Ứng dụng

Tóm tắt lại. Bản thân ứng dụng PHP sẽ chỉ truy vấn các lọ ENV. Một thư viện chỉ giúp đưa các lọ ENV vào cơ sở mã, nhưng chỉ khi chúng chưa được thiết lập

Các fortrabbit là nơi phép màu xảy ra. Trong khi tạo Ứng dụng trên fortrabbit, bạn sẽ chọn CMS hoặc khung mong muốn của mình. Lựa chọn này sẽ cấu hình các lọ ENV của máy chủ theo các cách mà phần mềm có thể làm việc với nó. Ví dụ: đối với Laravel và Craft, ENV var

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
3 sẽ được điền bằng mật khẩu của cơ sở dữ liệu Ứng dụng. Đối với Symfony, chúng tôi cung cấp DSN sẵn sàng sử dụng trong biến
echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
4. Đây là liên kết đến các cài đặt của Ứng dụng của bạn

  • bảng điều khiển. cấm đoán. com/apps/{{tên ứng dụng}}/vars

Vì vậy, rất có thể, Ứng dụng fortrabbit của bạn sẽ hoạt động tốt. Như một phần thưởng, bạn thậm chí còn đặt lại mật khẩu cơ sở dữ liệu mà không cần chạm vào bất kỳ cấu hình nào

Thêm và chỉnh sửa các lọ ENV trên fortrabbit

Bạn có thể thêm các lọ ENV cho Ứng dụng của mình trong Bảng điều khiển > Ứng dụng của bạn > Cài đặt > Các lọ ENV. Đầu vào hỗ trợ định dạng tệp dotenv và cho phép bạn tạo hoặc cập nhật nhiều biến cùng một lúc

Thêm lọ ENV vào ứng dụng của bạn. {{tên ứng dụng}}

Các thay đổi sẽ được phân phối sau khi bạn lưu trang. Có thể mất khoảng 60 giây, không cần triển khai lại. Một số khung và CMS có thể lưu trữ các lọ ENV, như Laravel, xem

Truy cập các lọ ENV từ PHP thô

Bạn có thể truy cập các lọ ENV của mình từ PHP bằng cách sử dụng biến toàn cục

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
5 hoặc hàm
echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
6

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];

Chủ đê nâng cao

Cho đến nay, chúng tôi đã đề cập đến những điều cơ bản, hãy đọc tiếp để tìm hiểu sâu hơn về các lọ ENV và cách chúng có thể giúp bạn

Các loại biến ENV trên fortrabbit

Có bốn loại lọ ENV khác nhau ở đây trên fortrabbit có sẵn cho Ứng dụng của bạn khi chạy

Bình ENV tùy chỉnh

Đó là những thứ bạn tự thêm vào Bảng điều khiển

Các lọ ứng dụng ENV

Bạn không thể ghi đè các lọ ENV chung. Chúng luôn có sẵn

  • echo $_SERVER["MY_ENV_VAR"];
    # or
    echo getenv["MY_ENV_VAR"];
    
    7 chứa tên Ứng dụng của bạn
  • echo $_SERVER["MY_ENV_VAR"];
    # or
    echo getenv["MY_ENV_VAR"];
    
    8 chứa đường dẫn đến tệp được mã hóa JSON chứa Bí mật ứng dụng

Các lọ ENV cài sẵn phần mềm

Tùy thuộc vào những gì bạn đã chọn khi tạo Ứng dụng của mình, các lọ ENV bổ sung sẽ được tạo cho bạn. Ví dụ. Khi chọn Laravel, ENV var

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
9 với một chuỗi dài 32 ký tự ngẫu nhiên sẽ được tạo [trong số các chuỗi khác]. Bạn có thể thay thế hoặc xóa các lọ Stack ENV đó sau khi tạo Ứng dụng giống như cách bạn có thể thay thế hoặc xóa các lọ ENV được tạo thủ công của mình

Các lọ ENV động

Các lọ ENV động sẽ khả dụng nếu bạn đã bật "Các lọ ENV động" trong Bảng điều khiển, đây là mặc định cho các Ứng dụng mới. Chúng chứa chi tiết truy cập cho các dịch vụ do fortrabbit cung cấp. Bạn có thể tìm thấy chúng trong Bảng điều khiển > {{tên ứng dụng}} > lọ ENV ở phía bên tay phải. Chúng sẽ không bao giờ ghi đè lên các lọ ENV hiện có, được tạo thủ công. Điều này có nghĩa là. nếu bạn tạo biến ENV theo cách thủ công, chúng tôi đảm bảo rằng chúng tôi sẽ không thay thế giá trị của biến đó bằng biến ENV được tạo động

Theo dõi danh sách các lọ ENV động có sẵn

MySQL [Tất cả ứng dụng phổ biến hoặc Thành phần ứng dụng chuyên nghiệp]

  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    0. Chứa tên cơ sở dữ liệu của Ứng dụng
  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    1. Chứa tên máy chủ cơ sở dữ liệu của Ứng dụng
  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    2. Chứa mật khẩu cơ sở dữ liệu của ứng dụng
  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    3. Chứa cổng cơ sở dữ liệu của Ứng dụng
  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    4. Chứa người dùng cơ sở dữ liệu của Ứng dụng

Lưu trữ đối tượng [Thành phần ứng dụng chuyên nghiệp]

  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    5. Chứa tên bộ chứa của Ứng dụng
  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    6. Chứa khóa truy cập bộ chứa của Ứng dụng
  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    7. Chứa vùng xô của Ứng dụng
  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    8. Chứa bí mật truy cập vùng chứa của Ứng dụng
  • # will work:
    MY_VAR=${OTHER_VAR}
    OTHER_VAR=something
    
    9. Chứa máy chủ API lưu trữ đối tượng của ứng dụng

Memcache [Thành phần ứng dụng chuyên nghiệp]

  • echo $_SERVER["MY_ENV_VAR"];
    # or
    echo getenv["MY_ENV_VAR"];
    
    90. Chứa số lượng máy chủ memcache khả dụng [Kế hoạch sản xuất. 2, nếu không. 1]
  • echo $_SERVER["MY_ENV_VAR"];
    # or
    echo getenv["MY_ENV_VAR"];
    
    91. Chứa tên máy chủ nút Memcache đầu tiên
  • echo $_SERVER["MY_ENV_VAR"];
    # or
    echo getenv["MY_ENV_VAR"];
    
    92. Chứa cổng nút Memcache đầu tiên
  • echo $_SERVER["MY_ENV_VAR"];
    # or
    echo getenv["MY_ENV_VAR"];
    
    93. Chứa tên máy chủ nút Memcache thứ hai [nếu sử dụng gói Sản xuất]
  • echo $_SERVER["MY_ENV_VAR"];
    # or
    echo getenv["MY_ENV_VAR"];
    
    94. Chứa cổng nút Memcache thứ hai [nếu sử dụng gói Sản xuất]

Lọ ENV lồng nhau

Bạn có thể sử dụng đơn giản, trong các lọ ENV tùy chỉnh của mình. Đơn giản có nghĩa là bạn có thể đặt các biến tham chiếu đến các biến khác, chẳng hạn như biến chứa giá trị

# will work:
MY_VAR=${OTHER_VAR}
OTHER_VAR=something

Chúng tôi không hỗ trợ nhiều cấp độ nội suy, điều đó có nghĩa là bạn không thể sử dụng các biến tham chiếu đến các biến khác, chẳng hạn như tham chiếu lại các biến khác

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
9

ENV vars so với bảo mật

Lưu trữ thông tin đăng nhập [mật khẩu, bí mật,. ] trong các biến môi trường không phải là không có rủi ro. Chúng có thể bị lộ do lỗi lập trình hoặc sơ suất, chẳng hạn như khi bạn quên xóa

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
95 khỏi sản xuất. Vui lòng đọc một cuộc thảo luận chuyên sâu trong Blog của chúng tôi. Chúng tôi cung cấp một giải pháp thuận tiện cho vấn đề này với Bí mật ứng dụng của chúng tôi

Xác thực biến ENV

Các quy tắc xác thực nghiêm ngặt cho các lọ ENV đang được sử dụng trong Bảng điều khiển khi nhập. Các ký tự như ký hiệu "$" có thể gây hại trong hệ thống Linux. Đây là biểu thức chính quy mà chúng tôi sử dụng để xác thực đầu vào var ENV trong Bảng điều khiển

echo $_SERVER["MY_ENV_VAR"];
# or
echo getenv["MY_ENV_VAR"];
7

Vì vậy, đôi khi, khi bạn muốn lưu trữ khóa API bên ngoài dưới dạng biến ENV, bạn có thể gặp lỗi xác thực như. "Giá trị biến chứa các ký tự không hợp lệ". Nếu bạn không thể thay đổi giá trị của biến ENV của mình, bạn có thể mã hóa và giải mã chúng

Mã hóa và giải mã các lọ ENV

Sử dụng chuỗi được mã hóa base64 và giải mã nó khi áp dụng nó vào cấu hình trong mã của bạn. Mã hóa hoạt động như thế này

Làm thế nào để thêm. env trong PHP?

php function DBConnect[] { $user = getenv["DB_USER"]; . biến môi trường. php. environment-variables.

tôi có thể sử dụng. env trong PHP?

Một. env là một tệp văn bản thuần túy chứa các định nghĩa biến môi trường được thiết kế để ứng dụng PHP của bạn sẽ phân tích cú pháp chúng, bỏ qua Apache, NGINX và PHP-FPM. Việc sử dụng. tệp env phổ biến trong nhiều khung công tác PHP chẳng hạn như Laravel có hỗ trợ tích hợp để phân tích cú pháp .

Làm thế nào để đọc một. env trong PHP?

Tệp môi trường ứng dụng PHP chứa hầu hết các cài đặt email, máy chủ SMTP được định cấu hình. .
BƯỚC 1 Định cấu hình để đặt giá trị tùy chỉnh trong PHP. tập tin env
BƯỚC 2 Trong ứng dụng. đọc tệp php bằng phương thức env['']
BƯỚC 3 Sử dụng config[''] để truy xuất từ ​​ứng dụng. tập tin php

$_ env trong PHP là gì?

$_ENV là một mảng kết hợp siêu toàn cục khác trong PHP . Nó lưu trữ các biến môi trường có sẵn cho tập lệnh hiện tại. $HTTP_ENV_VARS cũng chứa thông tin tương tự, nhưng không phải là siêu toàn cầu và hiện không được dùng nữa. Các biến môi trường được nhập vào không gian tên chung.

Chủ Đề