วันอังคารที่ 7 กันยายน พ.ศ. 2553

ปัญหาเรื่อง เวลา ของ PHP บน Windows

เจอปัญหาว่า เขียน PHP ใช้ function date เพื่อแสดงเวลาดังนี้


echo date("H:i:s");

?>

ซึ่งเวลาของ Server เป็น 10:15:20
แต่เวลาที่ระบบแสดงออกมา เป็น

11:15:20

ซึ่งเวลา จะแตกต่างออกไป 1 ชั่วโมง ปัญหาอยู่ที่ว่า ทำไมเดือนก่อนหน้านี้ไม่เป็น แต่พอเป็นเดือนนี้ (มิถุนายน) เวลาเกิดเร็วไป 1 ชั่วโมงซะงัี้น ทั้งๆที่ไม่เปลี่ยนแปลง Code ใดๆเลย ?!?!?!?!?!

ผมลองใช้ คำสั่ง

echo gmdate("H:i:s");

เพื่อแสดงเวลามาตราฐาน Greenwich Mean Time ปรากฏว่า ได้เวลาออกมาเป็น

03:15:20

ซึ่งก็ถูกต้อง แต่ทำไมคำสั่ง date() ให้เวลาไม่ตรงในเดือนนี้ ????
จากการตรวจสอบ พบว่า ใน
C:\Windows\php.ini
มีตัวแปรชื่อว่า date.timezone ไม่ได้ตั้งค่าเอาไว้
ผมเลยลองบังคับให้เป็น

date.timezone="Asia/Bangkok"

แล้ว restart IIS

ปรากฏว่า เวลากลับมาถูกต้องแล้วครับ
ลองเอาไปทำดูนะครับ
ที่มา http://share.psu.ac.th/blog/kx-note/7040