ดู Error Log ใน cPanel หา PHP Error ได้ทันที

วิธีเปิด Error Log ผ่าน File Manager และ Logs Section ใน cPanel เพื่อ Debug ปัญหาได้รวดเร็ว

ดู Error Log ใน cPanel หา PHP Error ได้ทันที cPanel

เมื่อเว็บไซต์แสดงหน้าขาว หน้า 500 Internal Server Error หรือสคริปต์ PHP ทำงานผิดปกติ สิ่งแรกที่ควรทำคือเปิดดู Error Log ทันที ไฟล์ log เหล่านี้บันทึกข้อผิดพลาดทุกอย่างที่เกิดขึ้นบนเซิร์ฟเวอร์ ทั้ง PHP warning, fatal error, และ Apache error ซึ่งช่วยให้คุณระบุต้นตอปัญหาได้ภายในไม่กี่นาที โดยไม่ต้องเดาสุ่ม

บทความนี้จะแนะนำวิธีเข้าถึง Error Log บน cPanel Shared Hosting ผ่านหลายช่องทาง พร้อมอธิบายวิธีอ่าน log และตั้งค่า PHP ให้บันทึก error ได้ครอบคลุมมากขึ้น

Error Log คืออะไร และทำไมต้องดู

Error Log คือไฟล์ข้อความที่เซิร์ฟเวอร์สร้างขึ้นโดยอัตโนมัติเพื่อบันทึกเหตุการณ์ผิดปกติ แบ่งเป็น 2 ประเภทหลัก:

บน Shared Hosting ที่ใช้ cPanel คุณไม่มีสิทธิ์เข้าถึง Terminal โดยตรง แต่ cPanel มีเครื่องมือให้ดู log ได้หลายวิธี ได้แก่ Logs Section ในแผงควบคุม และการเปิดไฟล์ผ่าน File Manager

วิธีที่ 1: ดู Error Log ผ่าน Logs Section ใน cPanel

นี่คือวิธีที่ง่ายและเร็วที่สุดสำหรับผู้ใช้ Shared Hosting:

  1. เข้าสู่ cPanel ของคุณที่ yourdomain.com/cpanel หรือ yourdomain.com:2083
  2. เลื่อนหาหมวด Metrics หรือ Logs
  3. คลิก Errors (หรือ Error Log ในบาง interface)
  4. ระบบจะแสดง error ล่าสุด 300 รายการบนหน้าจอทันที

ข้อมูลที่แสดงจะรวม timestamp วันเวลา ประเภท error และชื่อไฟล์พร้อมบรรทัดที่เกิดปัญหา ซึ่งเพียงพอสำหรับการ debug ส่วนใหญ่

วิธีที่ 2: เปิดไฟล์ error_log ผ่าน File Manager

cPanel สร้างไฟล์ error_log ไว้ในโฟลเดอร์ public_html หรือ directory ย่อยที่สคริปต์ทำงาน วิธีเปิดผ่าน File Manager:

  1. ใน cPanel เลือก File Manager
  2. เข้าไปที่ public_html/
  3. เปิด "Show Hidden Files" (ไอคอนตาที่มุมขวาบน หรือ Settings)
  4. มองหาไฟล์ชื่อ error_log (อาจซ่อนอยู่ถ้าไม่เปิด hidden files)
  5. คลิกขวา → View หรือ Edit เพื่ออ่านเนื้อหา
Tip: ถ้าเว็บมีหลาย directory เช่น public_html/shop/ ให้ตรวจสอบว่ามีไฟล์ error_log อยู่ในแต่ละ directory ด้วย เพราะ PHP จะสร้าง log ในโฟลเดอร์เดียวกับสคริปต์ที่เกิด error

วิธีที่ 3: ตั้งค่า PHP ให้บันทึก Error Log ครบถ้วน

บางครั้ง error ไม่ถูกบันทึกเพราะการตั้งค่า PHP ปิด error reporting ไว้ คุณสามารถแก้ไขผ่านไฟล์ .htaccess หรือ php.ini ใน cPanel:

เพิ่มบรรทัดต่อไปนี้ใน .htaccess ที่ root ของเว็บ:

php_flag  display_errors    Off
php_flag  log_errors        On
php_value error_reporting   E_ALL
php_value error_log         /home/username/public_html/error_log

หรือถ้า hosting รองรับไฟล์ php.ini ในแต่ละ directory ให้สร้างไฟล์ php.ini แล้วใส่:

display_errors = Off
log_errors = On
error_reporting = E_ALL
error_log = /home/username/public_html/error_log
Tip: ตั้งค่า display_errors = Off บน production เสมอ เพราะการแสดง error บนหน้าจอเปิดเผยข้อมูล path และโครงสร้างไฟล์ให้แฮกเกอร์ได้ ควรอ่าน error จาก log file เท่านั้น

วิธีอ่าน Error Log ให้เข้าใจ

ตัวอย่าง error ที่พบบ่อยใน log มีรูปแบบดังนี้:

[Fri Jun 13 10:23:45.123456 2026] [php:error] [pid 12345] /home/user/public_html/index.php(42):
PHP Fatal error: Uncaught Error: Call to undefined function get_header() in /home/user/public_html/index.php:42

[Fri Jun 13 10:24:01.654321 2026] [php:warn] [pid 12346] /home/user/public_html/wp-config.php(88):
PHP Warning: include(/home/user/public_html/wp-includes/functions.php): failed to open stream: No such file or directory

ส่วนประกอบหลักที่ต้องสังเกต:

การตั้งค่า Error Log สำหรับ WordPress บน cPanel

WordPress มีโหมด debug ของตัวเอง ให้เพิ่มในไฟล์ wp-config.php ก่อนบรรทัด /* That's all, stop editing! */:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);

WordPress จะสร้างไฟล์ wp-content/debug.log บันทึก error ทั้งหมด หลัง debug เสร็จให้เปลี่ยน WP_DEBUG กลับเป็น false เพื่อความปลอดภัย

วิธีล้าง Error Log เมื่อไม่ต้องการแล้ว

ไฟล์ error_log อาจโตเร็วมากบนเว็บที่มีปัญหา ทำให้กินพื้นที่ Hosting ควรทำความสะอาดเป็นประจำ:

  1. ใน File Manager คลิกขวาที่ไฟล์ error_log
  2. เลือก Edit แล้วลบเนื้อหาทั้งหมด และบันทึกไฟล์เปล่า (อย่าลบไฟล์ เพราะ PHP จะสร้างใหม่ได้แต่บางระบบอาจมีปัญหา)
  3. หรือใช้ cPanel File Manager → คลิก Truncate เพื่อทำให้ไฟล์ว่างเปล่า
Tip: ก่อนล้าง log ควร Download ไฟล์เก็บไว้ก่อน เผื่อต้องย้อนกลับมาตรวจสอบในภายหลัง

ตรวจสอบว่า Error Log ทำงานถูกต้อง

หลังตั้งค่าเสร็จ ให้ทดสอบว่า PHP บันทึก error ได้จริงด้วยการสร้างไฟล์ทดสอบชั่วคราว:

# สร้างไฟล์ test_error.php ใน public_html ผ่าน File Manager
# ใส่เนื้อหาดังนี้:
<?php
error_log("TEST: Error log กำลังทำงานปกติ - " . date('Y-m-d H:i:s'));
trigger_error("TEST Warning จากหน้าทดสอบ", E_USER_WARNING);
echo "ทดสอบเสร็จแล้ว ตรวจดูไฟล์ error_log";
?>

# เข้า URL: https://yourdomain.com/test_error.php
# จากนั้นเปิดไฟล์ error_log ดูว่ามี "TEST:" ขึ้นมาหรือไม่

# เมื่อทดสอบเสร็จให้ลบไฟล์ test_error.php ทันที
Tip: ถ้าเปิดหน้าทดสอบแล้ว error_log ยังว่างอยู่ ให้กลับไปตรวจสอบว่าไฟล์ .htaccess หรือ php.ini ที่แก้ไขอยู่ถูก directory หรือเปล่า และ hosting อนุญาตให้ override ค่า php ผ่าน .htaccess หรือไม่ (บาง hosting ต้องตั้งผ่าน PHP Selector ใน cPanel แทน)

แก้ปัญหาที่พบบ่อย

Error: "PHP Fatal error: Call to undefined function"

error นี้หมายความว่าโค้ดเรียกใช้ฟังก์ชันที่ไม่มีอยู่ในระบบ สาเหตุที่พบบ่อยคือ PHP extension ที่จำเป็นไม่ได้เปิดใช้งาน เช่น mbstring, curl, gd ให้แก้ไขโดยไปที่ cPanel → MultiPHP Manager หรือ PHP Extensions แล้วเปิด extension ที่ต้องการ หรือตรวจสอบ PHP version ว่าตรงกับที่ plugin/theme ต้องการ

Error: "PHP Warning: include(): failed to open stream: No such file or directory"

เกิดจากการ include ไฟล์ที่ path ผิด มักเกิดหลังย้าย hosting หรือเปลี่ยน directory structure ให้ตรวจสอบ path ในโค้ดว่าใช้ absolute path หรือ relative path และให้ใช้ __DIR__ แทน path แบบ hardcode:

<?php
// แทนที่จะใช้ path แบบนี้ (อาจผิดเมื่อย้ายเซิร์ฟเวอร์)
include('/home/olduser/public_html/includes/header.php');

// ใช้แบบนี้แทน (ถูกต้องเสมอ)
include(__DIR__ . '/includes/header.php');
?>

Error: "PHP Parse error: syntax error, unexpected token"

ข้อผิดพลาดนี้แสดงว่าโค้ด PHP มี syntax ผิด เช่น ลืมปิด {}, วงเล็บ, หรือเครื่องหมาย semicolon ระบบจะระบุบรรทัดที่พบปัญหา ให้เปิดไฟล์นั้นแล้วตรวจสอบบรรทัดที่ log ระบุ รวมถึงบรรทัดก่อนหน้า 2-3 บรรทัดด้วย เพราะ parser อาจรายงาน error ที่บรรทัดถัดไปจากที่ผิดจริง

Error: "AH01630: client denied by server configuration"

นี่คือ Apache error หมายความว่ามี rule ใน .htaccess บล็อก request อยู่ ให้เปิดไฟล์ .htaccess ใน File Manager และตรวจสอบ Deny from all หรือ Order deny,allow ที่อาจตั้งค่าผิด โดยเฉพาะถ้าเพิ่ง copy .htaccess มาจากเซิร์ฟเวอร์อื่น

Error: "PHP Fatal error: Allowed memory size exhausted"

PHP ใช้ RAM เกินขีดจำกัดที่ตั้งไว้ ให้เพิ่ม memory limit ผ่าน .htaccess:

php_value memory_limit 256M

ถ้า hosting ไม่อนุญาตให้เพิ่มผ่าน .htaccess ให้ติดต่อ Support หรือตรวจสอบใน cPanel → MultiPHP INI Editor เพื่อแก้ memory_limit โดยตรง


คำถามที่พบบ่อย

Q: ไม่เห็นไฟล์ error_log ใน File Manager ต้องทำอย่างไร?

A: ไฟล์ error_log เป็น hidden file (ขึ้นต้นด้วย dot ในบางระบบ หรืออาจยังไม่ถูกสร้าง) ให้ไปที่ File Manager → คลิก Settings มุมขวาบน → ติ๊ก Show Hidden Files (dotfiles) แล้ว reload ถ้ายังไม่เห็น แสดงว่ายังไม่มี error เกิดขึ้น หรือการตั้งค่า log_errors ยังปิดอยู่ ให้ตรวจสอบผ่าน cPanel → Errors โดยตรงแทน

Q: ดู Error Log แล้วเจอข้อความเยอะมาก จะหาเฉพาะ error ล่าสุดได้อย่างไร?

A: ใน cPanel → Errors ระบบจะแสดง error 300 รายการล่าสุดอยู่แล้ว ถ้าเปิดผ่าน File Manager ให้เลื่อนไปที่ท้ายไฟล์เสมอ เพราะ log เพิ่มล่าสุดต่อท้าย นอกจากนี้ยังสามารถ Download ไฟล์มาเปิดด้วย Text Editor บนเครื่อง แล้วใช้ Ctrl+F ค้นหาคำว่า "Fatal" หรือวันที่ที่สนใจได้

Q: ควรเปิด WP_DEBUG ไว้บน production หรือไม่?

A: ไม่ควร ให้ตั้งค่า WP_DEBUG = true เฉพาะตอน debug บน staging หรือเว็บทดสอบเท่านั้น บน production ให้ตั้ง WP_DEBUG = false และถ้าจำเป็นต้องดู log ให้ใช้ WP_DEBUG_LOG = true พร้อมกับ WP_DEBUG_DISPLAY = false เพื่อให้บันทึกใน debug.log โดยไม่แสดงบนหน้าเว็บ ซึ่งปลอดภัยกว่ามาก