เข้าไปใน container ที่รัน PHP ก่อน
ใช้คำสั่งดู container ที่กำลังรัน:
docker ps
แล้วใช้คำสั่งเข้า container:
docker exec -it <container_id_or_name> /bin/bash
จากนั้นลองรัน
docker-php-ext-install mysqli
ขั้นตอนถัดไปที่ควรทำ
1.ตรวจสอบว่า mysqli
ถูกโหลดใน php.ini
หรือในไฟล์ config เพิ่มเติม
grep -r mysqli /usr/local/etc/php/
ดูว่ามีบรรทัด extension=mysqli.so
หรือ extension=mysqli
อยู่ในไฟล์ไหนบ้าง
2.สตาร์ทเว็บเซิร์ฟเวอร์หรือ PHP-FPM (แล้วแต่คุณใช้ตัวไหน)
service php-fpm restart
3.ตรวจสอบว่า PHP โหลด extension mysqli
สำเร็จ
php -m | grep mysqli
จากผลลัพธ์นี้
/usr/local/etc/php/conf.d/docker-php-ext-mysqli.ini:extension=mysqli.so
แปลว่า mysqli
ถูก enable ผ่านไฟล์ config ที่ conf.d/docker-php-ext-mysqli.ini
แล้วนะครับ
4.ทดสอบอีกครั้งว่าปัญหา Database connection error หายไปหรือยัง
เพิ่มเติมวิธีรีสตาร์ท
วิธีรีสตาร์ทเว็บเซิร์ฟเวอร์หรือ PHP-FPM ขึ้นกับว่าใน Docker container ของคุณใช้งานอะไรอยู่ ถ้าไม่แน่ใจลองเช็คดูตามนี้ครับ
รีสตาร์ท container จากฝั่งโฮสต์ Docker แทน
1.ออกจาก container (ถ้าอยู่ใน shell container)
exit
2.เช็ค container ที่กำลังรัน
docker ps
3.รีสตาร์ท container ด้วยคำสั่ง
docker restart <container_id_or_name>
เช่น
docker restart 8999998507019
วิธีรีสตาร์ท PHP-FPM ใน container นี้
ง่ายที่สุดคือรีสตาร์ท container ทั้งหมดเลย:
docker restart php56-fpm