PHP Logging

เคยประสบปัญหาไม่ครับที่ว่าถ้าเราต้องการที่จะ Debug error ที่เกิดจาก PHP เราะทำยังไง วันนี้เราจะมาเรียนรู้ว่าเราสามรถเปิดการ Debug ของ PHP ได้ยังไง โดยวิธีทำนั่นเราสามารถทำได้ 2 วิธีด้วยกันคือ
  • ให้ Output ออกไปที่ Standard Output หรือก็คือที่หน้าจอนั่นเอง
  • ให้ Output ออกไปที่ไฟล์ php_errors.log
ก่อนที่เราจะรู้ว่าแต่ละวิธีทำยังไงเราจำเป็นจะต้องรู้ก่อนว่า PHP Configuration สำหรับทำให้ PHP สามารถ log error ได้นั่นต้องเซ็ตค่าอย่างไรบ้าง (โดยส่วนมาก php.ini file จะอยู่ที่ C:\wamp\bin\php\php5.3.8\php.ini)


  • เริ่มแรกเลยนะครับต้องเซ็ตค่าตัวแปร log_errors = On ก่อนซึ่งตวแปรตัวนี้ทำหน้าที่ในการแสดง error ทั้งหมดออกทางหน้าจอ หรือทาง log file.

ทีนี้เรามาดูกันดีกว่าว่าวิธีทำในแต่ละอย่างนั่นทำอย่างไร เรามาเริ่มกันที่วิธีแรกกันเลยดีกว่า

  • ถ้าเราต้องการให้ error ที่เกิดขึ้นแสดงทางหน้าจอ หรือทางเพจที่เราสร้างขึ้นนั่นเราต้องทำการเซ็ต display_errors = On ด้วยโดยปกติเราควจจะเซ็ตค่านี้เป็น On ตลอดเวลาแม้ว่าเราจะน้ำ PHP Code ของเราไปใช้งานหรือ Production ก็ตาม
  • ถ้าเราต้องการให้ error ที่เกิดขึ้นแสดงใน log file เราจะต้องทำการเซ็ตค่า error_log = "c:/wamp/logs/php_error.log" ที่นี้พอมี error เกิดขึ้น error นั่นๆ ก็จะไปปรากฎที่ php_error.log file นั่นเอง
หรือถ้าเราไม่ต้องการไปเซ็ตค่าตัวแปรต่างๆ ใน php.ini เราก็สามารถที่จะเซ็ตมันผ่านการเขียนโค็ดได้ดังนี้นะครับ

ini_set('display_errors', TRUE);

เราสามารถวางบรรทัดด้านบนนนี้ไว้บนหัวขอแต่ละ file หรือตรงที่ที่เราจะใช้งานเพียงเท่านี้เองครับ ผลลัพธ์ของมันก็จะเหมือนกับการที่เราเซ็ต display_errors = On ใน php.ini file เลยครับ

วิธีการทดสอบ
เราสามารถที่จะทดสอบได้โดยลองเรียก function ที่ไม่มีอยู่จริงขึ้นมาเช่น

<?php
  a_function_not_exist();
?>

เพียงเท่านี้ error ที่บอกว่า function นี้ไม่มีอยู่ก็จะแสดงที่ หน้าจอ และ log file แล้วครับ

ข้อควรระวัง
วิธีการนี้ใช้เพื่อการ Debug source code เท่านั่นนะครับ ไม่สมควรเอาไปใช้ใน Production นะครับเพราะว่าอาจจะเป็นช่องทางหนึ่งที่สามารถถูกใช้ในการ Hack ได้และยังทำให้ Program เราช้าลงนะครับในกรณีที่เราเปิด log file.

อ้างอิง http://www.only10types.com/2011/02/php-logging-on-ubuntu-1004-lucid.html
First