Việc sử dụng các biến môi trường để chứa thông tin đăng nhập của bạn ngăn bạn vô tình chia sẻ khóa truy cập bí mật AWS của mình. Chúng tôi khuyên bạn không bao giờ thêm trực tiếp khóa truy cập AWS của mình vào máy khách trong bất kỳ tệp sản xuất nào. Nhiều nhà phát triển đã bị xâm phạm tài khoản do khóa bị rò rỉ
Để xác thực với Amazon Web Services, trước tiên SDK sẽ kiểm tra thông tin xác thực trong các biến môi trường của bạn. SDK sử dụng hàm getenv[]
để tìm các biến môi trường AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
và AWS_SESSION_TOKEN
. Những thông tin đăng nhập này được gọi là thông tin đăng nhập môi trường
Nếu đang lưu trữ ứng dụng của mình trên AWS Elastic Beanstalk, bạn có thể đặt các biến môi trường AWS_ACCESS_KEY_ID
và AWS_SECRET_KEY
thông qua bảng điều khiển AWS Elastic Beanstalk để SDK có thể tự động sử dụng các thông tin xác thực đó
Để biết thêm thông tin về cách đặt biến môi trường, hãy xem Hỗ trợ biến môi trường trong Hướng dẫn tham khảo công cụ và SDK AWS. Ngoài ra, để biết danh sách tất cả các biến môi trường được hầu hết các SDK AWS hỗ trợ, hãy xem
Theo ứng dụng 12 yếu tố, cách tốt nhất để định cấu hình mọi thứ để triển khai là thông qua các biến môi trường, không nhất thiết phải là tệp biến môi trường mà chỉ cần bất kỳ biến môi trường nào. Vấn đề là làm thế nào để đưa các biến môi trường vào PHP. Nó khá phức tạp tùy thuộc vào những gì bạn đang làm
Bước đầu tiên là đảm bảo rằng bạn đang sử dụng getenv
trong PHP cho các biến môi trường vì mảng $_ENV
có thể không được đặt trừ khi bạn đặt variables_order=EGPCS
trong cài đặt INI. Điều này là đủ cho các ứng dụng PHP dòng lệnh bao gồm máy chủ PHP dòng lệnh
Nếu bạn đang chạy PHP thông qua Apache thông qua mod_php hoặc CGI, thì cách duy nhất là sử dụng tệp getenv[]
0 dọc theo đường dẫn từ getenv[]
1 đến thư mục gốc của tài liệu và sử dụng chỉ thị getenv[]
2. Hoặc bạn đặt chúng vào khối Máy chủ ảo bên trong cấu hình Apache
Nếu bạn đang sử dụng NGINX + PHP-FPM. Bạn có 3 lựa chọn
- Đặt
getenv[]
3 bên trong cấu hình nhóm FPM của bạn và đặt các biến môi trường trong NGINX thông qua chỉ thịgetenv[]
4 trong ngữ cảnh chính của cấu hình NGINX. Tuy nhiên, điều này đặt biến môi trường cho tất cả các công nhân NGINX bất kể máy chủ ảo - Đặt chúng trong cấu hình nhóm bằng cách sử dụng chỉ thị
getenv[]
5 - Sử dụng chỉ thị
getenv
0 bên trong khối vị trí trong NGINX. Tuy nhiên, những biến này không xuất hiện trong$_ENV
haygetenv
2, chúng sẽ có tronggetenv
3. Điều này có thể hoặc có thể không được chấp nhận
Nếu bạn không có quyền truy cập vào cấu hình NGINX hoặc cấu hình nhóm PHP-FPM, thì bạn hoàn toàn không thể đặt biến môi trường. Nếu bạn đang sử dụng nhà cung cấp PAAS, nhà cung cấp đó thường sẽ có hệ thống cài đặt biến môi trường của riêng họ và bạn có thể sử dụng hệ thống đó
Cùng với sự phức tạp ở trên là việc xử lý các cài đặt INI, một số cài đặt này chỉ khả dụng trong tệp getenv
4 của hệ thống. Đối với CGI và FastCGI [và cả FPM], bạn có thể sử dụng getenv
5. Đối với mod_php, bạn cần sử dụng các lệnh đặc biệt bên trong getenv[]
0, nhưng nó phải có điều kiện đối với phiên bản mod_php. Đây là một ví dụ
php_value variables_order "EGPCS"
php_value date.timezone "UTC"
php_value session.auto_start 0
php_value session.use_trans_sid 0
php_value session.use_strict_mode 1
php_value session.use_cookies 1
php_value session.use_only_cookies 1
Tuy nhiên, đối với các ứng dụng dòng lệnh, khởi chạy qua getenv
7, chúng sẽ không đọc getenv
5. Bạn có thể buộc một getenv
4 cụ thể bằng cách sử dụng tùy chọn $_ENV
0 [nhưng khi đó tệp getenv
4 cụ thể của bạn sẽ cần thiết lập mọi thứ, không có cách nào để hợp nhất INI] hoặc bạn có thể chỉ định cài đặt INI cụ thể thông qua tùy chọn $_ENV
2
Như bạn có thể thấy, đó là shit-show. Nếu bạn muốn viết một ứng dụng PHP có thể di động được triển khai qua Apache, NGINX hoặc thông qua thực thi dòng lệnh [điều này rất quan trọng khi bạn đang thực hiện kiểm tra đơn vị, máy chủ cục bộ, ReactPHP hoặc Swoole hoặc xem xét nội tâm thông qua PHP REPL như Psysh], . Nó thậm chí còn trở nên phức tạp hơn nếu một số biến môi trường này cần được chia sẻ với các ứng dụng khác [như SPA phía máy khách sử dụng cùng các biến như phía máy chủ]
Hôm nay tôi sẽ giải thích cách thêm thư mục thời gian chạy PHP vào biến môi trường Windows 10 AWS_ACCESS_KEY_ID
9 của bạn. Điều này sẽ cung cấp cho bạn quyền truy cập toàn cầu vào AWS_SECRET_ACCESS_KEY
0 từ bất kỳ dấu nhắc lệnh nào
Xin lưu ý rằng bạn phải mở lại các cửa sổ nhắc lệnh của mình [nếu bạn đã mở bất kỳ cửa sổ nào trước khi cập nhật]
Dấu nhắc lệnh tải biến môi trường AWS_ACCESS_KEY_ID
9 khi nó được mở lần đầu tiên
Khán giả mục tiêu
- Người dùng Windows 10
- Các nhà phát triển PHP muốn PHP có thể truy cập toàn cầu từ bất kỳ dấu nhắc lệnh nào [ví dụ:. php. exe cho “linting” hoặc để bắt đầu một nhà phát triển. người phục vụ]
Lưu ý rằng bạn không bị giới hạn đối với PHP, đây có thể là bất kỳ thư mục nào chứa bất kỳ chương trình nào - ví dụ:. AWS_SECRET_ACCESS_KEY
2