Cron Job ไม่ทำงาน เกิดจากอะไร? รวม 7 สาเหตุที่พบบ่อย พร้อมวิธีแก้ไขบน Web Hosting

เคยไหม? ตั้ง Cron Job บน Web Hosting ไว้เรียบร้อย แต่เว็บไม่สำรองข้อมูล สคริปต์ไม่รัน หรือไม่มีอีเมลแจ้งเตือน ทั้งที่คิดว่าน่าจะทำงานแล้ว

ปัญหาเหล่านี้เป็นเรื่องที่ผู้ใช้งาน Web Hosting เจอได้บ่อย และในหลายกรณี Cron Job อาจไม่ได้เสีย แต่เกิดจากการตั้งค่าบางจุดที่ถูกมองข้าม โดยบทความนี้จะพาคุณไปไล่เช็กทีละสาเหตุ พร้อมแนวทางแก้ไขแบบเข้าใจได้ง่ายกัน

1. ตั้ง Cron Syntax ผิด

Cron Job จะทำงานได้ก็ต่อเมื่อกำหนด Cron Syntax (เวลา) ถูกต้อง หากใส่ผิดแม้เพียงตำแหน่งเดียว งานจะไม่รันตามเวลาที่ต้องการ โดยรูปแบบมาตรฐานมี 5 ช่อง คือ นาที ชั่วโมง วันที่ เดือน วันในสัปดาห์

ตัวอย่าง Cron Syntax ที่พบบ่อย

  • รันทุก 5 นาที – */5 * * * *
  • รันทุกวันเวลา 02:00 – 0 2 * * *
  • รันทุกวันจันทร์เวลา 09:30 – 30 9 * * 1

แนวทางแก้ไข

  • ตรวจจำนวนช่องและตัวคั่น (ต้องมี 5 ช่องก่อนคำสั่งเสมอ)
  • หากไม่แน่ใจ แนะนำใช้เครื่องมือ Cron Generator เพื่อลดความผิดพลาด

2. ใส่ Path ของไฟล์หรือคำสั่งผิด

อีกสาเหตุที่พบบ่อยคือการใส่ Path ของคำสั่งหรือไฟล์สคริปต์ไม่ครบ/ไม่ถูกต้อง โดยเฉพาะบน Web Hosting ที่มักรัน Cron ในสภาพแวดล้อม (Environment) จำกัด ทำให้การใช้ Path แบบย่อหรือ Relative Path มักไม่ทำงาน

สิ่งที่ควรทำ

  • ใช้ Absolute Path ทั้ง “ตัวคำสั่ง” และ “ไฟล์สคริปต์”
  • หากไฟล์หรือโฟลเดอร์มีช่องว่าง ให้ครอบด้วยเครื่องหมาย Quote “…”
  • ควรกำหนด Log ไว้เสมอ เพื่อให้ดูผลลัพธ์และ Error ได้ทันที

ตัวอย่าง Command แบบใช้งานจริง

  • รัน PHP script ทุก 5 นาที + เก็บ log – */5 * * * * /path/to/php /home/USER/public_html/cron.php >> /home/USER/cron.log 2>&1

หมายเหตุ : เปลี่ยน /path/to/php, /home/USER/... ให้เป็น path จริงของระบบที่ใช้งาน และแนะนำให้ทดสอบรันคำสั่งเดียวกันผ่าน SSH/Terminal ก่อน เพื่อตรวจสอบว่า Path ถูกต้อง

แนวทางแก้ไข

  • ตรวจสอบตำแหน่งไฟล์จริงจาก File Manager
  • ใช้ Absolute Path ทุกครั้ง
  • เช็กตัวพิมพ์เล็ก-ใหญ่ (Linux แยก case)

3. PHP Version ไม่ตรงกับที่เว็บไซต์ใช้

แม้หลายโฮสติ้งจะมี PHP อยู่หลายเวอร์ชัน แต่ Cron Job อาจเรียก PHP คนละเวอร์ชันกับหน้าเว็บ

ตัวอย่างที่พบบ่อย

  • เว็บทำงานปกติ แต่ Cron Job Error
  • ฟังก์ชันบางอย่างไม่รองรับ PHP เวอร์ชันนั้น

แนวทางแก้ไข

  • ระบุ Path PHP ให้ตรงเวอร์ชันที่เว็บใช้
  • ตรวจสอบ PHP CLI บนโฮสติ้ง
  • ทดสอบรันคำสั่งเดียวกันผ่าน Terminal (ถ้ามี)

4. สิทธิ์ไฟล์และเจ้าของไฟล์ (Permissions / Ownership)

หาก Cron Job รันแล้วไม่เกิดผลลัพธ์ บางครั้งปัญหาอาจไม่ได้อยู่ที่ Cron โดยตรง แต่อยู่ที่สิทธิ์ไฟล์/โฟลเดอร์ หรือ Owner ของไฟล์ไม่ถูกต้อง เช่น

  • กรณีรันผ่าน PHP เช่น php /path/script.php – ไฟล์สคริปต์ควร “อ่านได้” (มักใช้ 644) และโฟลเดอร์ควรเข้าถึงได้ (มักใช้ 755)
  • กรณีรันไฟล์โดยตรง (เช่น shell script หรือไฟล์ที่มี shebang) จึงค่อยต้องมีสิทธิ์ execute (เช่น 755)

แนวทางแก้ไข

  • ตรวจสอบ Permission ของไฟล์และโฟลเดอร์ให้เหมาะกับวิธีรัน
  • ตรวจสอบ Owner/Group ให้เป็นผู้ใช้เดียวกับที่ตั้ง Cron Job
  • หลีกเลี่ยงการเปิดสิทธิ์กว้างเกินจำเป็น (เช่น 777) เพราะเสี่ยงด้านความปลอดภัย

5. Cron Job ถูกจำกัดหรือถูกปิดโดยระบบ

ใน Shared Hosting บางแพ็กเกจอาจมีการจำกัดการใช้งานบางอย่าง เช่น

  • จำกัดความถี่ Cron Job
  • จำกัดเวลาการทำงาน (Timeout)
  • ปิดบางคำสั่งเพื่อความปลอดภัย

แนวทางแก้ไข

  • ตรวจสอบเงื่อนไขแพ็กเกจ Hosting ที่ใช้อยู่
  • ลดความถี่การรัน
  • ติดต่อผู้ให้บริการโฮสติ้งเพื่อสอบถามข้อจำกัด

6. Cron Job ทำงานแล้ว แต่ไม่มี Output ให้เห็น

หลายคนคิดว่า Cron ไม่ทำงานตามที่ตั้งไว้ แต่จริง ๆ Cron Job อาจทำงานแล้ว เพียงแค่ไม่แสดงผล เช่น

  • ไม่ได้ตั้งให้ส่ง Output ไปทางอีเมล
  • ไม่มีการบันทึก Log
  • Script ไม่ echo หรือ write ไฟล์

แนวทางแก้ไข

  • ตั้งค่าให้ส่ง Output ไปทางอีเมล หรือกำหนดให้เขียน Log ออกไฟล์
  • ทดสอบด้วยคำสั่งง่าย ๆ ก่อน (เช่น ให้สร้างไฟล์ text) เพื่อยืนยันว่า Cron รันจริง

7. Script มี Error ภายใน

แม้ Cron จะรันได้ แต่าหาก Script ภายในมี Error งานก็จะหยุดทันที เช่น

  • Syntax Error ใน PHP
  • เชื่อมต่อ Database ไม่ได้
  • เรียกไฟล์อื่นไม่สำเร็จ

แนวทางแก้ไข

  • เปิด Error Reporting ใน Script ชั่วคราว
  • ตรวจสอบ Error Log ของระบบ
  • ทดสอบรันไฟล์ผ่าน Browser หรือ CLI

โดยสรุปแล้ว ปัญหา Cron Job ไม่ทำงานมักไม่ได้ซับซ้อนอย่างที่คิด และส่วนใหญ่มักมาจากจุดเล็ก ๆ เช่น Syntax ผิด Path ไม่ตรง PHP เวอร์ชันไม่ตรง หรือไม่มี Log ให้ตรวจสอบ โดยหากไล่เช็กตามลำดับอย่างเป็นขั้นตอน จะช่วยให้แก้ปัญหาได้เร็วและตรงจุดมากขึ้นปรับการ

สำหรับใครที่ยังไม่เคยตั้ง Cron Job หรืออยากดูขั้นตอนตาม Control Panel ที่ใช้งานอยู่ สามารถดูได้จากคู่มือต่อไปนี้
👉 วิธีสร้าง Cron Job ใน DirectAdmin
👉 วิธีตั้ง Cron Job ใน Plesk

หากคุณกำลังมองหาเว็บโฮสติ้งที่ใช้งานง่ายและปลอดภัย สามารถดูรายละเอียดแพ็กเกจ Web Hosting ของเราได้ที่
👉 https://www.hostatom.com/web-hosting

Was this article helpful?

Related Articles