Cara menggunakan getenv php w3schools

Variabel lingkungan adalah cara terbaik untuk mengonfigurasi aplikasi PHP karena mereka menjaga pengaturan aplikasi di luar kode. Dengan melakukan ini, akan lebih mudah untuk mencegah kredensial aman terekspos, memelihara aplikasi, dan menggunakan aplikasi di berbagai lingkungan

Dalam tutorial ini, Anda akan belajar tentang beberapa dari banyak cara di mana variabel lingkungan dapat diatur dan diambil dalam aplikasi PHP. Dengan begitu, aplikasi Anda dapat mengakses semua informasi yang diperlukan, seperti kunci API, file yang diunggah, string kueri, dan data formulir

Cara mengakses variabel lingkungan di PHP

Gunakan Superglobals PHP

Salah satu cara paling umum agar variabel lingkungan diakses di PHP adalah melalui penggunaan Superglobals. Ini adalah variabel bawaan yang sudah ditentukan sebelumnya, tersedia di semua cakupan. Diinisialisasi oleh runtime PHP, mereka mengatur informasi lingkungan PHP dengan cara (kebanyakan) logis dan efisien, sehingga Anda hanya perlu berkonsultasi dengan satu larik untuk mengambil informasi yang Anda butuhkan

Misalnya,

echo apache_getenv('NAME');
3 berisi header permintaan, jalur, dan lokasi skrip,
echo apache_getenv('NAME');
4 berisi variabel sesi, dan
echo apache_getenv('NAME');
5 berisi variabel yang diteruskan ke skrip saat ini saat dipanggil dengan metode HTTP POST

Yang mengatakan, ada beberapa hal yang harus diperhatikan

  • Pertama, bergantung pada cara menyetelnya, satu atau beberapa larik Superglobal mungkin kosong. Ini penting untuk diperiksa, jika aplikasi Anda bergantung pada Superglobal tertentu yang sedang diisi
  • Kedua, variabel yang terkandung dalam
    echo apache_getenv('NAME');
    
    _3 dan
    echo apache_getenv('NAME');
    
    8 (yang berisi variabel yang diimpor dari lingkungan tempat parser PHP berjalan) dapat tumpang tindih satu sama lain, bergantung pada konteks skrip. Ini mungkin membingungkan jika Anda mengharapkan kunci menjadi unik di semua Superglobal

Perbedaan antara lingkungan SAPI/CGI, dan CLI

Selain direktif

echo apache_getenv('NAME');
_6, lingkungan juga berperan dalam pengaturan informasi di Superglobals. Khususnya, jika aplikasi Anda berjalan menggunakan CGI, FastCGI, atau SAPI, maka
echo apache_getenv('NAME');
3, selain variabel normal, akan diisi dengan variabel lingkungan. Alternatifnya, jika Anda menggunakan PHP CLI, maka hanya
echo apache_getenv('NAME');
3 yang akan disetel

Gunakan getenv()

Selain menggunakan Superglobals PHP, Anda juga dapat menggunakan getenv() untuk mengambil variabel lingkungan. Jika fungsi dipanggil tanpa argumen, maka ia mengembalikan semua variabel lingkungan yang tersedia. Namun, jika sebuah argumen diteruskan, nilai variabel lingkungan dengan nama tersebut dikembalikan

Anda dapat melihat contoh penggunaannya di bawah ini

echo getenv('SHELL');
foreach (getenv() as $key => $value) {
    echo $key . ' - ' . $value;
}
_

Seperti Superglobals PHP, ada tangkapan untuk menggunakan fungsi ini. Mengutip dokumentasi fungsi

Jika PHP dijalankan dalam SAPI seperti Fast CGI, fungsi ini akan selalu mengembalikan nilai variabel lingkungan yang ditetapkan oleh SAPI, bahkan jika putenv() telah digunakan untuk menetapkan variabel lingkungan lokal dengan nama yang sama. Gunakan parameter
# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
_2 untuk mengembalikan nilai variabel lingkungan yang disetel secara lokal

Perlu diketahui bahwa

# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
_3 tidak aman untuk thread

Gunakan apache_getenv()

Jika Anda menggunakan Apache sebagai server web Anda, maka Anda memiliki satu fungsi tambahan yang dapat Anda gunakan. apache_getenv(). Fungsi ini mengambil set variabel lingkungan dalam proses Apache. Anda dapat melihat contoh penggunaannya di bawah ini

echo apache_getenv('NAME');

Jangan secara implisit mempercayai variabel lingkungan

Penting untuk ditekankan bahwa — terlepas dari mana data berasal, apakah itu berasal dari salah satu Superglobal PHP, konfigurasi server web, atau lingkungan operasi — jangan mempercayainya secara implisit. Variabel lingkungan harus disaring dan divalidasi seperti data lain yang berada di luar aplikasi Anda

Cara mengatur variabel lingkungan

Selain membaca variabel lingkungan, mengetahui cara menyetelnya juga berguna, dengan begitu, Anda tahu cara mengubahnya, jika diperlukan. Dalam contoh berikut, kita akan menyetel variabel lingkungan,

# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
4, menjadi "Robert Smith", penyanyi utama band rock Inggris The Cure

Mengatur mereka di lingkungan

Sebelum memulai server web atau menjalankan skrip PHP, Anda dapat mengatur variabel lingkungan di lingkungan saat ini

Jika Anda ingin belajar tentang mengatur variabel lingkungan secara lebih mendalam, Dominik Kundel telah menulis postingan blog mendetail tentangnya

UNIX, Linux, dan macOS

Jika Anda menggunakan salah satu dari tiga sistem operasi ini atau varian seperti BSD, maka ada tiga cakupan yang dapat Anda atur variabel lingkungannya

  • Tersedia untuk lingkungan saat ini (sesi) dan semua sesi anak
  • Hanya tersedia untuk sesi saat ini
  • Hanya tersedia untuk proses tertentu

Anda dapat melihat contoh ketiganya dalam kode di bawah ini

# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
_

Microsoft Windows

Pengaturan variabel lingkungan sedikit berbeda di Microsoft Windows. Anda dapat mengaturnya melalui Control Panel, atau Anda dapat mengaturnya di command prompt atau konsol PowerShell. Ada contoh dari dua yang terakhir di bawah ini

# Set NAME in the Windows Command Prompt
set NAME="Robert Smith"

# Set NAME in the Windows PowerShell console
$Env:NAME = "Robert Smith"

Gunakan Docker

Jika Anda menggunakan Docker, Anda dapat mengatur variabel lingkungan di Dockerfiles menggunakan perintah

# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
5, seperti pada contoh di bawah ini

ENV NAME "Robert Smith"

Jika Anda membuat konfigurasi multi-kontainer menggunakan Docker Compose, Anda dapat mengatur variabel lingkungan di docker-compose. yml menggunakan kunci lingkungan, seperti pada contoh di bawah ini

environment:
  - NAME="Robert Smith"

Ada sejumlah cara lain untuk menyetel variabel lingkungan saat bekerja dengan Docker, yang dapat Anda baca di dan dokumentasi Docker Compose

Menggunakan putenv()

Dengan menggunakan fungsi ini, Anda dapat mengatur nilai variabel lingkungan — dan menghapusnya — dalam permintaan saat ini. Dalam permintaan berikutnya, variabel, jika diatur di luar permintaan saat ini, akan kembali ke nilai aslinya

Variabel yang diatur dengan cara ini juga tersedia untuk proses yang dipanggil oleh skrip tersebut, dan hanya tersedia dengan memanggil

# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
3

Anda dapat melihat contoh kedua fungsi tersebut pada kode di bawah ini

// Set the environment variable, NAME.
putenv('NAME="Robert Smith"');

// Retrieve the environment variable, NAME.
echo getenv('NAME');

// Unset the environment variable, NAME.
putenv('NAME');

Perlu diketahui bahwa

# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
_7 tidak aman untuk thread

Menggunakan

# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
_8 Mirip dengan
# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
7, adalah
# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
8. Fungsi ini menetapkan variabel lingkungan khusus proses Apache. Secara alami, fungsi ini dan pelengkapnya hanya tersedia saat menggunakan Apache. Anda dapat melihat contoh penggunaannya di bawah ini

apache_setenv('NAME', 'Robert Smith');
echo apache_getenv('NAME');

Mengatur variabel lingkungan dalam konfigurasi NGINX

Jika Anda menggunakan NGINX sebagai server web, Anda dapat menggunakannya untuk menyetel variabel lingkungan. Arahan mengambil nama dan nilai peka huruf besar kecil, yang harus dikutip jika mengandung spasi

fastcgi_param NAME "Robert Smith";

Variabel ini tersedia melalui

# Available to the current environment (session) and all child sessions.
export NAME="Robert Smith"

# Available only to the current session.
NAME="Robert Smith"

# Available only to a specific process.
NAME="Robert Smith" php script.php
_3, dan di
echo apache_getenv('NAME');
8 dan
echo apache_getenv('NAME');
3 Superglobal array

Mengatur variabel lingkungan dalam konfigurasi Apache

Jika Anda menggunakan Apache sebagai server web, Anda dapat menggunakan direktif

# Set NAME in the Windows Command Prompt
set NAME="Robert Smith"

# Set NAME in the Windows PowerShell console
$Env:NAME = "Robert Smith"
5 untuk mengatur variabel lingkungan. Direktif dapat digunakan dalam konfigurasi server utama Apache, konfigurasi host virtual, konfigurasi direktori, atau file. file htaccess

Arahan mengambil nama dan nilai peka huruf besar kecil, yang harus dikutip jika mengandung spasi. Jika tidak ada nilai yang diberikan, variabel akan diinisialisasi ke string kosong

SetEnv NAME "Robert Smith"

Tidak seperti menggunakan

# Set NAME in the Windows Command Prompt
set NAME="Robert Smith"

# Set NAME in the Windows PowerShell console
$Env:NAME = "Robert Smith"
1 di NGINX, variabel lingkungan yang disetel menggunakan
# Set NAME in the Windows Command Prompt
set NAME="Robert Smith"

# Set NAME in the Windows PowerShell console
$Env:NAME = "Robert Smith"
5 di Apache (atau salah satu fungsi terkait) hanya tersedia di
echo apache_getenv('NAME');
3 Superglobal

Gunakan. file env

Meskipun masing-masing cara di atas memiliki kelebihannya masing-masing, ada beberapa kelemahan yang perlu diingat

  • Mereka dapat menjadi tantangan untuk dipertahankan seiring berjalannya waktu, berdasarkan kompleksitas proyek
  • Tidak ada daftar sentral dari variabel lingkungan yang diperlukan, detail tentang apa yang dilakukan variabel tertentu, atau tipe data yang diizinkan

Pendekatan alternatif, salah satu yang mendapatkan daya tarik yang signifikan dalam PHP selama beberapa tahun terakhir, menggunakan file dotenv, dinamai sesuai nama file de facto. . kira-kira. Ini adalah file teks biasa yang menentukan variabel lingkungan yang diperlukan agar aplikasi berfungsi sebagai daftar pasangan kunci/nilai

Anda dapat melihat contohnya di bawah ini

echo apache_getenv('NAME');
0

Dengan asumsi bahwa contoh di atas adalah. env untuk proyek kami, kami dapat menggunakan paket seperti vlucas/phpdotenv, yang berbunyi. env, secara default dan menambahkan variabel yang didefinisikan di dalamnya ke

echo apache_getenv('NAME');
8 dan
echo apache_getenv('NAME');
3 Superglobals

Untuk melakukan itu, pertama-tama kita menginstal paket sebagai dependensi aplikasi dengan menjalankan perintah di bawah ini

echo apache_getenv('NAME');
_1

Kemudian, kami akan menggunakan paket tersebut untuk memuat variabel lingkungan, seperti pada contoh di bawah ini

echo apache_getenv('NAME');
_2

  • Gunakan
    ENV NAME "Robert Smith"
    
    _1 alih-alih
    ENV NAME "Robert Smith"
    
    2 untuk menghindari melempar pengecualian jika
    ENV NAME "Robert Smith"
    
    3 tidak ditemukan
  • Lewati jalur file sebagai parameter kedua ke
    ENV NAME "Robert Smith"
    
    4 untuk menggunakan file selain
    ENV NAME "Robert Smith"
    
    3

Catatan tentang. keamanan file env

Sangat penting untuk menyadari hal itu. file env tidak boleh disimpan di bawah kontrol versi

Jika itu terjadi, semua manfaat keamanan menggunakan file dotenv akan hilang karena data sensitif apa pun yang terkandung di dalamnya akan tersedia bagi siapa saja yang dapat mengakses repositori. Itulah mengapa biasanya mengecualikannya dari kontrol versi, seperti dengan menambahkan. env (dan variasi nama file) ke proyek. gitignore saat menggunakan Git

Begitulah cara bekerja dengan variabel lingkungan di PHP

Saya harap artikel ini membantu Anda memahami cara menggunakan variabel lingkungan dalam proyek PHP Anda. Apakah Anda memiliki cara lain untuk bekerja dengan variabel lingkungan?

Matthew Setter adalah Editor PHP di tim Twilio Voices dan pengembang poliglot. Dia juga penulis Mezzio Essentials dan Docker Essentials. Saat dia tidak menulis kode PHP, dia mengedit artikel PHP yang bagus di Twilio. Anda dapat menemukannya di msetter@twilio. com;

Nilai posting ini

1 2 3 4 5

Penulis

  • Cara menggunakan getenv php w3schools
    Matius Setter

Peninjau

  • Cara menggunakan getenv php w3schools
    Stephenie Minami Nakajima
  • Cara menggunakan getenv php w3schools
    Agustus Allard


Pos terkait

Cara menggunakan getenv php w3schools

Cara Mengirim Email di PHP pada tahun 2023

23 Januari 2023

Pada artikel ini, Anda akan mempelajari tiga cara berbeda untuk mengirim email dengan PHP;

Cara menggunakan getenv php w3schools

Laravel Breeze vs Laravel Jetstream

20 Januari 2023

Pada artikel ini, Anda mendapatkan pengantar komprehensif untuk Laravel Breeze dan Jetstream, termasuk menginstalnya, diskusi tentang perbedaan dan persamaannya, dan kapan menggunakannya

Cara menggunakan getenv php w3schools

Bantu Mereka Membantu Orang Lain

06 Desember 2022

Dalam tutorial ini, Anda akan mempelajari cara membuat aplikasi untuk membantu siapa saja dengan cepat menyumbang ke badan amal dan nirlaba menggunakan Slim Framework, Vue. js, dan Tailwind CSS

Cara menggunakan getenv php w3schools

Pelajari Bahasa Maasai dengan Cara yang Menyenangkan

20 Oktober 2022

Dalam tutorial ini, Anda akan membuat aplikasi yang membantu Anda mempelajari bahasa Maasai dengan cara yang mudah dan menyenangkan menggunakan WhatsApp

Cara menggunakan getenv php w3schools

Pub/Sub di Laravel - Pemahaman Mendalam

20 Oktober 2022

Dalam tutorial ini, Anda akan belajar tentang Pub/Sub, pola desain perangkat lunak berbasis pesan dan cara mengimplementasikannya di Laravel