ไฟล์ php รันแบบ manual เวอร์คดี แต่รันใน crontab ไม่เวอร์ค

โปรแกรมบน CentOS ที่ควรติดตั้งใช้งานร่วมกับ VoIP Server

ไฟล์ php รันแบบ manual เวอร์คดี แต่รันใน crontab ไม่เวอร์ค

โพสต์โดย nuiz » 14 เม.ย. 2019 01:54

พอดีผมเจอปัญหานี้กับตัวเองครับ เขียน php script ไว้รันอัพเดท IP Address ใน Script มีเรียกใช้คำสั่งบน Linux ด้วย เขียนเสร็จก็ลองรันแบบ Manual ก็รันได้ปกติครับ แต่พอเอาไปใส่ไว้ใน Crontab ปรากฏว่า... ไม่ทำงานเฉยเลยครับ เป็นงงอยู่ตั้งนาน

สรุปว่า...
ถ้าจะรัน php ใน Crontab ตรงไหนที่ใช้ฟังก์ชั่น shell_exec(); หรือ exec(); หรือ system(); เพื่อเรียกใช้งานคำสั่งบน Linux เราต้องใส่ Path เต็มของคำสั่งนั้นเสมอครับ เช่น

$cmd="asterisk -rx 'sip show peers'"; อย่างนี้จะรันบน Crontab ไม่ได้ (ถ้าเรา debug ดูจะเห็นข้อความว่าหาคำสั่ง asterisk ไม่เจอ) เราต้องใส่ Path เต็มของคำสั่ง asterisk แบบนี้ครับ

$cmd="/usr/sbin/asterisk -rx 'sip show peers'";

ปล.
ถ้าเรารันแบบ Manual จะใส่ Path เต็มหรือไม่ก็ได้ครับ

วิธีการ Debug ดูตอนรัน Crontab ทำดังนี้
1. สร้างไฟล์เก็บ Log
touch /root/cron.error

2. ใน Crontab ให้ส่งข้อความไปที่ไฟล์ Log (ใส่ * 5 อัน จะรันทุก 1 นาที)
* * * * * /usr/bin/php /usr/sbin/updateip.php &> /root/cron.error

3. แล้วคอยดูข้อมูลในไฟล์ Log
tail -f /root/cron.error

ถ้ามีอะไรเกิดขึ้นในขณะที่ Crontab ทำงานเราก็จะเห็นครับ
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7069
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

ย้อนกลับไปยัง CentOS - The Community Enterprise Operating System

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 4 ท่าน

cron