Mengapa aplikasi web publik tidak menggunakan file ini untuk konfigurasi

10

Hampir setiap CMS publik di luar sana menggunakan file konfigurasi .php untuk pengaturan basis data dan sebagainya. Misalnya WordPress secara otomatis membuat file konfigurasi .php ketika Anda menginstalnya.

Mengapa mereka tidak menggunakan file .ini saja? PHP sudah memiliki parse_ini_file () dan saya yakin bahasa lain memiliki fungsi yang sama.

thelolcat
sumber

Jawaban:

9

Dengan PHP khususnya; perbedaan antara file .ini dan file .conf.php dapat diabaikan.

Menggunakan PHP secara langsung untuk konfigurasi memiliki keuntungan yang berbeda yaitu hanya perlu menghubungkan dengan satu sintaks portabel yang terdefinisi dengan baik untuk konfigurasi, dan fakta bahwa file konfigurasi adalah kode yang benar kadang berguna.

Dibandingkan dengan itu; file ini tidak memiliki apa-apa untuk ditawarkan; dan include, requiredan require_oncesemuanya terkenal dan (kebanyakan) dipahami dengan baik.

Williham Totland
sumber
relate to one well-defined, portable syntax for configurationSaya tidak mengerti. file ini memiliki sintaks yang jelas dan portabel juga. Setiap .conf.phpfile memiliki strukturnya sendiri, sebagian besar berbasis array, tetapi itu tidak jauh berbeda dari file ini.
yannis
7
Perhatikan juga bahwa file PHP dapat memberikan keamanan dasar. Jika Joomla menggunakan XML atau .inifile untuk menyimpan konfigurasi, tidak akan ada banyak contoh kesalahan konfigurasi yang berjalan di mana konfigurasi dapat diakses oleh publik, yang biasanya bukan hal yang baik. Dengan file PHP, ini akan menjadi sangat, sangat langka untuk server yang salah konfigurasi untuk menyajikan kontennya kepada pengunjung.
Tom Marthenal
4

Secara umum saya lebih suka .iniatau file konfigurasi XML. Dalam sistem yang lebih besar, seringkali orang selain pengembang perlu mengubah nilai konfigurasi, mungkin DBA atau sysadmin. Kebanyakan DBA dan sysadmin yang saya tahu tidak akan memiliki masalah menavigasi melalui skrip PHP sederhana, tetapi saya lebih suka jika mereka tidak melakukannya. Satu kesalahan kecil di sana dapat merusak seluruh aplikasi dalam beberapa cara.

Tetapi dalam sistem yang lebih kecil, sangat nyaman untuk menggunakan skrip PHP untuk konfigurasi. Saya bermain-main dengan AWS SDK hari ini, yang juga menggunakan skrip PHP untuk konfigurasi:

CFCredentials::set(array(
    'development' => array(
        'key' => 'xxx',
        'secret' => 'xxxx',
        'default_cache_config' => sys_get_temp_dir(),
        'certificate_authority' => true
    ),
    '@default' => 'development'
));    

Alih-alih hardcoding default_cache_config, saya melewati temp sistem, dan itu akan bekerja di setiap sistem yang saya gunakan skrip. Script ini adalah bukti kecil konsep yang akan diteruskan sekitar 10 pengembang, dan saya ingin mereka menjalankannya, tanpa banyak memikirkan. Jika prototipe berkembang, saya akan hardwire dengan kelas konfigurasi XML saya (dan jelas tidak akan bergantung pada cache sistem file).

yannis
sumber
"Satu kesalahan kecil di sana dapat merusak seluruh aplikasi dalam beberapa cara." Seolah-olah nilai yang tidak valid untuk ini tidak akan? Atau XML itu lebih ramah?
whatsisname
@whatsisname Biasanya jika nilai konfigurasi yang salah mengatur sistem Anda, maka masalah Anda ada di tempat lain. Saya lebih memikirkan sepotong kode yang tidak disengaja dalam konfigurasi skrip melakukan sesuatu yang ekstrem, sesuatu yang saya alami lebih dari sekali. Itu tidak mungkin dengan file ini / xml, poin utamanya adalah bahwa konfigurasi skrip bukanlah sesuatu yang ingin Anda bagikan dengan non pengembang.
yannis
3

Jawabannya sederhana: sebuah conf.php pada dasarnya nol pekerjaan yang diperlukan untuk beroperasi. Ini hanya file sumber lain.

Apa namanya
sumber
0

Kecepatan tanpa caching juga bisa menjadi alasannya. Konfigurasi PHP dapat di-cache secara transparan jika diperlukan. Sedangkan file INI perlu diuraikan teks setiap kali dibaca dan Anda harus membuat cache sendiri. Untuk file kecil tidak apa-apa, tetapi dengan ratusan baris diuraikan pada setiap permintaan dapat naik hingga puluhan milidetik, yang cukup banyak untuk web 200ms dioptimalkan.

Tomáš Fejfar
sumber