php.ini คืออะไร?
php.ini คืออะไร?
php.ini คือไฟล์ที่ใช้สำหรับปรับแต่งคุณสมบัติ หรือการทำงานของ php
( เครื่องหมาย ; ในไฟล์ php.ini เป็นเครื่องหมายคอมเม้นท์ ถ้าบรรทัดใดมีเครื่องหมายเซมิคอล่อน อยู่ข้างหน้า นั่นหมายความว่าบรรทัดนั้นจะไม่มีผลใดๆ บรรทัดนั้นจะเป็นแค่คอมเม้นท์ )
( เครื่องหมาย ; ในไฟล์ php.ini เป็นเครื่องหมายคอมเม้นท์ ถ้าบรรทัดใดมีเครื่องหมายเซมิคอล่อน อยู่ข้างหน้า นั่นหมายความว่าบรรทัดนั้นจะไม่มีผลใดๆ บรรทัดนั้นจะเป็นแค่คอมเม้นท์ )
php.ini อยู่ที่ไหน ?
php.ini บนวินโดว์ปรกติจะอยู่ใน C:WINDOWS ครับ ของคุณใช้ appserv น่าจะอยู่ในนี้ ถ้าไม่เจอลอง find ดูในไดว์ C:
PHP มี config ต่างๆ มากมาย หากอยากรู้ว่า server ของเราเซ็ต config อะไรไว้อยู่บ้างให้ทดสอบด้วยการสั่ง phpinfo(); ในไฟล์ php ไฟล์ใดก็ได้ ระบบจะแสดง config ออกมาให้เห็นทั้งหมด รวมไปถึงหากต้องการทราบว่าไฟล์ php.ini อยู่ที่ไหนก็ดูได้จาก phpinfo(); เช่นกัน
+ปัญหาการติดตั้ง-การเพิ่ม memory-limit ใน php.ini
วิธีแก้
ลองใช้ phpinfo() นะครับ แล้วดูว่าระบบเรียก php.ini จากที่ไหน เช่น /usr/local/etc/php.ini ซึ่งไฟล์นี้จะเป็นค่าเริ่มต้นของ PHP เราไม่สามารถไปทำอะไรได้เพราะเป็นไฟล์ของระบบ
แต่เราสามารถปรับแต่งค่านี้ได้จากคำสั่ง
ini_set("memory_limit", "40M");
ซึ่งอาจจะต้องเพิ่มเข้าไปใน config.php เอง
ที่มา : https://moodle.org/mod/forum/discuss.php?d=71098
วิธีแก้
ลองใช้ phpinfo() นะครับ แล้วดูว่าระบบเรียก php.ini จากที่ไหน เช่น /usr/local/etc/php.ini ซึ่งไฟล์นี้จะเป็นค่าเริ่มต้นของ PHP เราไม่สามารถไปทำอะไรได้เพราะเป็นไฟล์ของระบบ
แต่เราสามารถปรับแต่งค่านี้ได้จากคำสั่ง
ini_set("memory_limit", "40M");
ซึ่งอาจจะต้องเพิ่มเข้าไปใน config.php เอง
ที่มา : https://moodle.org/mod/forum/discuss.php?d=71098
สำหรับการ setup php ตั้งแต่เวอร์ชั่น 5.3 เป็นต้นไป จะมีไฟล์ php.ini-development เอาไว้เป็น sample ให้ copy เป็น php.ini ถ้าต้องการใช้ทดสอบโปรแกรมเฉยๆ และไฟล์ php.ini-production เอาไว้ใช้ใน server ที่ให้บริการกับลูกค้าจริง
โดย config ที่ผมจะแนะนำให้รู้จักมีดังนี้
display_errors – On/Off – หากเกิด error ขึ้นให้แสดงภายในหน้าเว็บหรือไม่ ถ้าเป็นเครื่อง development ควร On ไว้เพื่อ debug ถ้าเป็นเครื่อง production ควร Off เพื่อไม่ให้ผู้ใช้เห็น
error_reporting – E_ALL/0 – ใช้ปรับระดับ level การแสดง error ว่าจะให้แสดงมากน้อยเพียงใด หากต้องการปิด error ไม่ให้แสดงเลย ให้ใส่เป็น 0 (ศูนย์) ได้
short_open_tag – On/Off – ถ้าเปิด On ไว้จะสามารถใช้ <? ?> แทน <?php ?> และ <?=’Hello World’?> แทน <?php echo ‘Hello World’; ?> ได้ (feature นี้เพื่อความสะดวกของตัวโปรแกรมเมอร์นั่นเอง)
max_execution_time – int – กำหนดเป็นตัวเลขที่ต้องการให้ script สามารถรันได้นานที่สุด ทั่วไปกำหนดที่ 30 วินาทีซึ่งค่อนข้างเพียงพอต่อการใช้งานทั่วไป หากต้องมีการทำงานที่ใช้การประมวลผลเป็นเวลานานสามารถปรับเพิ่มขึ้นได้ แต่ไม่แนะนำให้ใส่เยอะเกินไป เพราะอาจทำให้ loop infinite ก่อนความเสียหายเป็นระยะเวลานาน โดยที่เราไม่รู้ตัวได้
max_input_time – int – ใช้กำหนดเวลามากที่สุดที่อนุญาตให้ php ประมวลผลข้อมูลที่ผู้ใช้ส่งเข้ามาได้เช่นการ submit form post
memory_limit – int – กำหนดขนาดของ memory ที่อนุญาตให้ script แต่ละตัวใช้ได้ ถ้ากำหนดสูงไปอาจเกิดปัญหา memory leak ได้
post_max_size – int – ขนาดข้อมูลใหญ่ที่สุดที่อนุญาตให้ผู้ใช้ส่งเข้ามาได้ ขนาดตรงนี้รวมทั้ง file ที่ upload และข้อมูลที่ submit ผ่าน form เข้ามา
auto_prepend_file – string – path ไฟล์ php ที่ต้องการทำงานก่อนการทำงาน php ทุกๆ ไฟล์ที่รันตามปกติ ตรงนี้มีประโยชน์มากต่อการกำหนดตัวแปร Global ที่ต้องการให้ใช้งานได้ทุกๆ ไฟล์ ซึ่งเราจะเขียนอย่างไรก็ได้ตามใจเราเลย
auto_append_file – string – เหมือน auto_prepend_file ต่างกันแค่เป็นการทำงานหลังไฟล์ php ทุกๆ ไฟล์
file_uploads – On/Off – อนุญาตให้ upload file ขึ้น server ได้หรือไม่
upload_max_filesize – int – ขนาดไฟล์สูงสุดที่ให้ upload ได้ (ต้อง <= post_max_size )
max_file_uploads – int – จำนวนไฟล์ที่ upload ได้พร้อมกันทั้งหมด
extension – string – กำหนด extension ของ php ที่ต้องการใช้งาน
session.gc_maxlifetime – int – อายุของ session ของผู้ใช้แต่ละคนที่จะเก็บไว้สูงสุด หากมีการเรียกใช้ session
Config เหล่านี้นอกจากจะสามารถกำหนดได้ที่ php.ini แล้วเรายังสามารถกำหนดใน run-time ในไฟล์ php ไฟล์ใดก็ได้อีกด้วย เพียงเรียกใช้ function ini_set() ก็สามารถเปลี่ยนแปลงค่า config เหล่านี้ได้ตลอดเวลา