|
ปัญหา |
อุปสรรค |
แนวทางแก้ไขปัญหา |
ข้อเสนอแนะ |
|
XAMPP Apache Start ไม่ได้ |
Port 80 ถูกใช้งานโดย IIS หรือ Service อื่น |
หยุด IIS ด้วยคำสั่ง iisreset /stop หรือแก้ไข httpd.conf ให้ใช้ Port 8080 แล้ว Restart Apache ผ่าน XAMPP Control Panel |
ควรตรวจสอบ Service ที่ใช้ Port 80 ด้วย netstat -ano ก่อนเริ่ม Apache และตั้ง Startup type ของ IIS เป็น Manual เพื่อป้องกันการชนกันของ Port |
|
หน้าเว็บขาว (White Screen of Death) หลังติดตั้ง Module ใหม่ |
PHP memory_limit ต่ำเกินไป และ Module มี Dependency ไม่ครบ |
แก้ไข php.ini เพิ่ม memory_limit = 256M, max_execution_time = 300 แล้ว Restart Apache หากยังไม่หายให้ปิด Module ผ่าน Drush หรือแก้ไขตาราง system_ ในฐานข้อมูล |
ควรตั้ง memory_limit เริ่มต้นที่ 256M และเปิด display_errors ในช่วงพัฒนาเพื่อระบุสาเหตุได้ง่ายขึ้น |
|
Module ที่ต้องการไม่รองรับ Drupal 8.9.11 |
หลาย Module หยุดพัฒนาหรือย้ายไปรองรับเฉพาะ Drupal 9/10 |
ค้นหา Module ทางเลือก (Alternative) จาก Drupal.org หรือใช้ Patch จากชุมชน Drupal และทดสอบก่อนใช้จริง |
วางแผนอัปเกรดเป็น Drupal 10 ในระยะยาว เพื่อรองรับ Module ใหม่และ Security update ที่ต่อเนื่อง |
|
การนำเข้าฐานข้อมูลผ่าน phpMyAdmin ล้มเหลว |
ขนาดไฟล์ SQL เกินขีดจำกัดของ PHP |
แก้ไข php.ini: upload_max_filesize = 128M, post_max_size = 128M, max_execution_time = 300 และ Restart Apache |
สำหรับฐานข้อมูลขนาดใหญ่ (>50MB) ควรใช้คำสั่ง mysql import ผ่าน command line หรือใช้ Drush เพื่อความเสถียร |
|
ภาษาไทยแสดงผลเป็น ??? หรืออักขระเพี้ยน |
Charset/Collation ของ Database ไม่ใช่ utf8mb4 |
สร้าง Database ใหม่ด้วย utf8mb4_unicode_ci และตั้งค่า my.ini ของ MariaDB ให้ default-character-set=utf8mb4 |
ตรวจสอบ Collation ทั้งระดับ Database, Table และ Column ให้เป็น utf8mb4 ตั้งแต่แรกเริ่มเพื่อรองรับภาษาไทยและ Emoji |
|
URL alias จาก Pathauto ไม่สร้างอัตโนมัติ |
Pattern ยังไม่ถูกกำหนดครบทุก Content type |
เข้า Admin > Config > URL aliases > Patterns และเพิ่ม Pattern สำหรับแต่ละ Content type แล้วรัน Bulk update generate URL aliases |
ควรกำหนด Pattern ทันทีตอนสร้าง Content type ใหม่ เพื่อให้ URL มีโครงสร้างเป็นระบบตั้งแต่แรก |
|
Cron ของ Drupal ไม่ทำงานอัตโนมัติบน Windows/XAMPP |
Windows Server ไม่มี Cron daemon เหมือน Linux |
ใช้ Windows Task Scheduler เรียก URL http://localhost/workmanual/cron.php ตามช่วงเวลาที่ต้องการ |
บน Production ควรตั้ง Task Scheduler ให้เรียก cron.php ทุก 1 ชั่วโมง และตรวจสอบ Log เป็นระยะ |
|
การ Upload ไฟล์ล้มเหลว หรือแจ้ง Permission denied |
Folder sites/default/files ไม่มีสิทธิ์เขียน (Write) |
ตั้งค่าสิทธิ์ Full Control ให้กับ User ที่ Apache รัน (โดยปกติคือ SYSTEM) ผ่าน Properties > Security > Edit |
หลังติดตั้ง Drupal ควรตรวจสอบสิทธิ์ของโฟลเดอร์ files/, translations/, private/ ทุกครั้งเพื่อป้องกันปัญหาการ Upload |
|
Backup and Migrate Module ล้มเหลวเมื่อฐานข้อมูลขนาดใหญ่ |
max_execution_time หมดก่อน Backup เสร็จสมบูรณ์ |
เพิ่ม max_execution_time เป็น 600 ใน php.ini หรือใช้ Drush: drush sql-dump > backup.sql เพื่อ Backup ผ่าน CLI |
สำหรับ Production ควรใช้ Drush หรือ mysqldump ร่วมกับ Task Scheduler เพื่อความน่าเชื่อถือและอัตโนมัติ |
|
การย้ายจาก XAMPP (Apache) ไปยัง IIS มีปัญหา URL Rewrite |
IIS ไม่รองรับไฟล์ .htaccess โดยตรง ต้องใช้ web.config |
ติดตั้ง URL Rewrite Module ของ IIS และแปลงกฎจาก .htaccess เป็น web.config ด้วยเครื่องมือ IIS Import |
ทดสอบ Clean URL, Redirect และ Access rules บน IIS Staging ก่อนย้าย Production เพื่อลดความเสี่ยง |
|
หลังอัปเดต Module เว็บแจ้งข้อผิดพลาด Database schema mismatch |
ยังไม่ได้รัน update.php เพื่ออัปเดตโครงสร้างฐานข้อมูล |
เข้า http://localhost/workmanual/update.php ในฐานะผู้ใช้ admin แล้วรัน Pending updates ทั้งหมด |
ควร Backup ฐานข้อมูลก่อนอัปเดต Module ทุกครั้ง และทดสอบบน Staging environment ก่อนอัปเดตจริง |
|
Composer install/require ล้มเหลวเมื่อเพิ่ม Contributed Module |
PHP memory_limit ไม่พอ หรือ PHP version ไม่ตรงกับที่ Module ต้องการ |
ใช้คำสั่ง php -d memory_limit=-1 composer.phar require drupal/xxx และตรวจสอบ PHP version ให้ตรงกับ constraint ของ Module |
ควรใช้ Composer 2.x และ PHP 7.4 ที่ตรงตามข้อกำหนดของ Drupal 8.9.11 อย่างเคร่งครัด รวมถึงตั้งค่า COMPOSER_MEMORY_LIMIT=-1 ไว้ใน Environment variable |