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 ประเภทหลัก:
- PHP Error Log — บันทึก PHP Warning, Notice, Fatal Error, Parse Error ที่เกิดจากโค้ดในไฟล์ .php
- Apache Error Log — บันทึก 404 Not Found, 403 Forbidden, 500 Internal Server Error และ error จาก .htaccess
บน Shared Hosting ที่ใช้ cPanel คุณไม่มีสิทธิ์เข้าถึง Terminal โดยตรง แต่ cPanel มีเครื่องมือให้ดู log ได้หลายวิธี ได้แก่ Logs Section ในแผงควบคุม และการเปิดไฟล์ผ่าน File Manager
วิธีที่ 1: ดู Error Log ผ่าน Logs Section ใน cPanel
นี่คือวิธีที่ง่ายและเร็วที่สุดสำหรับผู้ใช้ Shared Hosting:
- เข้าสู่ cPanel ของคุณที่
yourdomain.com/cpanelหรือyourdomain.com:2083 - เลื่อนหาหมวด Metrics หรือ Logs
- คลิก Errors (หรือ Error Log ในบาง interface)
- ระบบจะแสดง error ล่าสุด 300 รายการบนหน้าจอทันที
ข้อมูลที่แสดงจะรวม timestamp วันเวลา ประเภท error และชื่อไฟล์พร้อมบรรทัดที่เกิดปัญหา ซึ่งเพียงพอสำหรับการ debug ส่วนใหญ่
วิธีที่ 2: เปิดไฟล์ error_log ผ่าน File Manager
cPanel สร้างไฟล์ error_log ไว้ในโฟลเดอร์ public_html หรือ directory ย่อยที่สคริปต์ทำงาน วิธีเปิดผ่าน File Manager:
- ใน cPanel เลือก File Manager
- เข้าไปที่
public_html/ - เปิด "Show Hidden Files" (ไอคอนตาที่มุมขวาบน หรือ Settings)
- มองหาไฟล์ชื่อ
error_log(อาจซ่อนอยู่ถ้าไม่เปิด hidden files) - คลิกขวา → View หรือ Edit เพื่ออ่านเนื้อหา
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
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 เกิดตอนไหน เปรียบกับเหตุการณ์ที่รู้
- ประเภท error — Fatal Error หยุดสคริปต์ทันที, Warning ทำงานต่อได้แต่ผิดปกติ, Notice เป็นแค่คำเตือน
- ชื่อไฟล์และบรรทัด — เช่น
index.php(42)หมายถึงบรรทัด 42 ในไฟล์ index.php - ข้อความ error — อธิบายสาเหตุ เช่น "undefined function", "file not found"
การตั้งค่า 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 ควรทำความสะอาดเป็นประจำ:
- ใน File Manager คลิกขวาที่ไฟล์
error_log - เลือก Edit แล้วลบเนื้อหาทั้งหมด และบันทึกไฟล์เปล่า (อย่าลบไฟล์ เพราะ PHP จะสร้างใหม่ได้แต่บางระบบอาจมีปัญหา)
- หรือใช้ cPanel File Manager → คลิก Truncate เพื่อทำให้ไฟล์ว่างเปล่า
ตรวจสอบว่า 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 ทันที
.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 โดยไม่แสดงบนหน้าเว็บ ซึ่งปลอดภัยกว่ามาก