วิธีที่ 1 แก้ php.ini
จากเครื่อง Host
1. สร้างไฟล์ php.ini
บนเครื่อง host (ด้านนอก container):
mkdir -p /opt/php56
nano /opt/php56/php.ini
เพิ่มเนื้อหาเช่น:
date.timezone = Asia/Bangkok
2. แก้คำสั่ง docker run
ให้ mount ไฟล์นี้เข้าไปใน container:
หยุด container เก่า:
docker stop php56-fpm
docker rm php56-fpm
รันใหม่โดย mount php.ini
:
docker run -d \
--name php56-fpm \
-p 9006:9000 \
-v /var/www/html/old-chaiyakul.com:/var/www/html/old-chaiyakul.com \
-v /opt/php56/php.ini:/usr/local/etc/php/php.ini \
--privileged \
--restart unless-stopped \
php:5.6-fpm
**หากหลัง reboot เกิด 503 Service Unavailable
ปัญหา 503 Service Unavailable หลัง reboot เกิดจาก Apache พยายามเชื่อมต่อกับ PHP-FPM ที่รันอยู่ใน Docker container ผ่าน proxy:fcgi://127.0.0.1:9006
แต่ container ยังไม่รัน หรือรันไม่ทัน ทำให้ Apache ไม่เจอ PHP-FPM จึงแสดง 503
วิธีแก้: ทำให้ Docker container php56-fpm
รันอัตโนมัติหลัง reboot
1.ตรวจสอบว่า container ถูกตั้งให้ restart อัตโนมัติหรือไม่:
รันคำสั่งนี้:
docker inspect -f '{{ .HostConfig.RestartPolicy.Name }}' php56-fpm
ถ้าได้ผลลัพธ์เป็น no
หรือว่างเปล่า แสดงว่ายัง ไม่ตั้งให้ restart
2.ตั้งค่าให้ container รันอัตโนมัติหลัง reboot:
รันคำสั่งนี้:
docker update --restart unless-stopped php56-fpm
ตัวเลือก unless-stopped
คือ:
- จะเริ่ม container อัตโนมัติหลัง reboot
- ยกเว้นคุณหยุดมันด้วย
docker stop
เอง
3. reboot
reboot
วิธีที่ 2 (ชั่วคราว): ตั้งในไฟล์ PHP ด้วย date_default_timezone_set()
ใน index.php
:
<?php
date_default_timezone_set("Asia/Bangkok");
phpinfo();
ตรวจสอบว่า timezone ถูกต้อง
โหลดเว็บอีกครั้ง แล้วดูในหน้า phpinfo()
ตรงหัวข้อ date
→ Default timezone
ควรเห็นว่าเป็น Asia/Bangkok