ภาพประกอบ

Error Report ต่างๆบน PHP

Error Report คือเครื่องมือช่วยเตือนเราว่าเรากำลังทำผิดพลาดอะไร ตรงไหน เป็นกรแจ้งเตือนจากทาง php ที่เราสามารถตรวจสอบได้ง่ายๆ สะดวกต่อการทำ Debug โค๊ดต่างๆของเรา เวลาที่เราพัฒนางานต่างๆ แต่การเปิดเอาไว้มีวิธีการอย่างไรบ้าง มาลองดูกันครับ

ภาพประกอบ

ภาพประกอบ

Error Report ต่างๆบน PHP

Error Report PHP คือการตั้งค่าให้ PHP แสดงข้อความ error ต่างๆบนหน้านั้นๆออกมาให้เราดู เพื่อให้ง่ายต่อการตรวจสอบ ง่ายต่อการพัฒนาโปรแกรมของเรา ซึ่งโดยปรกตินั้น PHP จะมีการตั้งค่านี้มาให้เราเป็นพื้นฐานอยู๋แล้ว ซึ่งมีการกำหนดเอาไว้ที่ไฟล์สำหรับตั้งค่า กำหนดค่าต่างๆของ PHP ซึ่งก็คือไฟล์ php.ini นั้นเอง

ภาพประกอบ : php ini

ภาพประกอบ : php ini

แม้ PHP จะมีเครื่องมือต่างๆมากมายช่วยเราในการทำงาน และช่วยเรา Debug เวลาเราพัฒนาระบบแต่การตั้งค่า report เอาไว้ก็เป็นวิธีง่ายๆที่ช่วยได้ดีมากๆอีกวิธีหนึ่ง แต่บางคนอาจจะเห็นว่าเวลาใช้งานจริงบนเว็บไซต์ใครๆเค้าก็ปิดกันหมด จริงๆแล้วมันก็ถูกนะครับว่าเวลาทำเป็น Production แล้วเราควรปิดมันเสีย แต่ในตอนที่เรากำลังพัฒนา develop มันอยู่การเปิดจะช่วยได้มากๆ นั้นหมายความว่าเวลาที่เราพัฒนามันอยู่ยังไม่ได้ใช้งานจริงให้เปิดมันให้หมดเลยครับ ส่วนถ้านำไปให้ลูกค้าใช้งานจริงก็ปิด…

ทีนี้มาดูวิธีการใช้งานกันครับว่าเราจะเปิด error อย่างไรกันดี และแต่ละแบบมันก็ดูคล้ายๆกันไปหมดมันแตกต่างกันอย่างๆ

Report All

error_reporting(E_ALL & ~E_NOTICE);

แบบแรกนี่เป็นแบบที่ใช้ง่ายที่สุดละครับ คือเปิดมันให้หมดเลย ไม่ต้องกำหนดค่าอะไรซึ่งปรกติมันเป็นแบบนี้อยู่แล้วนะครับ เป็นค่าพื้นฐานมาอยู่แล้ว

Report And Warning

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

แบบที่สองนี่จะเป็นการเปิดแบบที่น่าสนใจไม่น้อยครับ เพราะแบบแรกเมื่อกี้นี้จะแจ้งเตือนต่อเมื่อระบบมีปัญหาเท่านั้น หมายถึงระบบมันทำงานต่อไม่ได้หรือติดขัดอะไรอยู่มันถึงจะมีข้อความเข้ามาแจ้งเตือนเรานะครับ แต่สำหรับแบบนี้จะเป็นการแจ้งเตือนให้เราทราบด้วยว่ามีบางอย่างที่ ไม่เหมาะสม  หรือพวกการตั้งชื่อตัวแปรไม่ถูกต้องก็ยังแจ้งเตือนเลย ….ซึ่งส่วนใหญ่เวลาเปิดมันก็จะเตือนเต็มไปหมดเลยนะ 55

Report Parse

error_reporting(E_ERROR | E_WARNING | E_PARSE);

การแจ้งเตือนแบบนี้จะแจ้งเตือนเพียงเฉพาะเวลาที่เราเปิดไฟล์หน้านั้นๆหรือหน้าที่เกี่ยวข้องขึ้นมาเท่านั้นนะครับ

Close Report

error_reporting(0);

ส่วนนี่เป็นการปิด report ที่น่าจะรู้จักกันดีนะครับ ปิดหมดละ ไม่ให้โชว์อะไรเลย เหมาะกับเวลาเอาไปใช้งานจริงแล้วนะครับ

รวมๆเลยก็คือเมื่อเราเริ่มต้นทำการพัฒนาก็เปิด report เอาไว้ครับจะได้แจ้งเราได้หมดส่วนรูปแบบที่แนะนำก็คือแบบที่เป็น report และ warning ไปด้วยเพราะละเอียดดี บอกหมดทำให้เราทำงานได้ดีขึ้นมากๆ แต่เวลาที่จะเอาขึ้น Host จริงๆก็ปิดไปซะเพราะพวกนี้มีผลต่อเรื่องของความปลอดภัยสูงนะครับ ถ้ามีพวกไม่หวังดีต่อระบบของเราเข้ามาเห็นละแย่แน่เลย

ส่วนถ้าทำบน Host ที่ไม่สามารถเข้าถึงไฟล์ php.ini ได้ก็ใช้วิธีเปิดบน .htaccess แทนเอาครับ

php_value error_reporting E_ALL & ~E_NOTICE

แต่ผมมีเครื่องมือดีๆมาแนะนำอีกตัวนะครับสำหรับคนที่ไม่ได้พัฒนางานด้วย framework อาจจะลองดูเครื่องมือตัวนี้ก็ได้ เป็นตัวช่วยอีกแรง

PHP-Error

มันจะเป็นการแจ้งในรูปแบบที่ดูเข้าใจได้ง่ายมากขึ้น และมีการทำ highlighting มาให้เราด้วยวิธีใช้งานก็แสนง่ายดายถ้าเป็น project ทั่วๆไปแบบไม่มี framework ก็แค่วางไฟล์ไว้ที่ folder งานของเราแล้วเรียกแบบนี้

require('php_error.php');
\php_error\reportErrors();

หรือจะใช้งานร่วมกับ wordpress ก็ได้โดยวางไว้ใน folder แล้วเรียกผ่านทาง wordpress theme ในไฟล์ function.php แบบเดียวกันนี้แล้วเรียกให้ทำงาน auto บน php.ini แบบนี้

auto_prepend_file = "C:\php\php_error.php"
php_error.autorun = On

หรือแม้แต่ framework อย่าง codeigniter เองก็ยังสามารถใช้ได้ด้วยนะครับ แค่เพียงเอาไฟล์ไปวางไว้มน folder application แล้วเรียกผ่านทาง autoload.php ตามนี้เลย

require( __DIR__ . '/../php_error.php' );
\php_error\reportErrors( array(
'application_folders' => 'application',
'ignore_folders' => 'system'
) );

ก็น่าจะพอเข้าใจวิธีการใช้งานกันไปบ้างแล้วที่เหือก็คือปล่อยใจให้ ชิน ไปกับ error ต่างๆที่แสดงขึ้นมาครับแล้วหาทางแก้ไขให้หมด อย่างถูกต้องหรือเหมาะสมเพียงเท่านี้คุณก็จะมีความสุขกับการทำงานแล้วครับ

อ้างอิงจาก : php.net/manual/en/function.error-reporting.php