News
การแก้ไขลง windows11 ไม่เห็น SSD M.2 ต้องโหลด Intel VMD Driver ใส่ USB
Notebook ที่ลง Asus Vivobook 14 ไม่เห็น Harddisk SSD M.2 ตอนลง
เลยไปซื้อ M.2 ตัวใหม่ก็ไม่เห็น
ทางร้าน Advice สาขาฟอจูน จึงแนะนำให้ดาวโหลด Driver (ลองแล้วไม่เห็นจึงไม่ได้ซื้อ ขอบคุณครับ)
ขั้นตอน โหลด Intel VMD Driver ใส่ USB
ใช้กับ windows10 กับ 11
ปัญหาที่พบบ่อย
❌ ไม่เห็น SSD ตอนลง
ต้องเข้า BIOS → SATA Mode = AHCI
บางรุ่นต้องโหลด Intel VMD Driver ใส่ USB
❌ เปิด Secure Boot แล้วลงไม่ได้
ปิดก่อน แล้วค่อยเปิดหลังลงเสร็จ
0 comments | Write Comment
เลยไปซื้อ M.2 ตัวใหม่ก็ไม่เห็น
ทางร้าน Advice สาขาฟอจูน จึงแนะนำให้ดาวโหลด Driver (ลองแล้วไม่เห็นจึงไม่ได้ซื้อ ขอบคุณครับ)
ขั้นตอน โหลด Intel VMD Driver ใส่ USB
ใช้กับ windows10 กับ 11
ปัญหาที่พบบ่อย
❌ ไม่เห็น SSD ตอนลง
ต้องเข้า BIOS → SATA Mode = AHCI
บางรุ่นต้องโหลด Intel VMD Driver ใส่ USB
❌ เปิด Secure Boot แล้วลงไม่ได้
ปิดก่อน แล้วค่อยเปิดหลังลงเสร็จ
ทำบูต windows 11 แบ่งเป็น 2 บูตอย่างไร
การทำ **Windows 11 แบบ 2 บูต (Dual Boot)** คือการติดตั้ง Windows 11 สองระบบแยกกันในเครื่องเดียว เลือกบูตตอนเปิดเครื่องได้
ผมอธิบายแบบ **ทำจริงได้ ปลอดภัย และไม่ลบข้อมูลเดิม** 👇
---
## 🧩 รูปแบบที่นิยม
1. **Windows 11 + Windows 11** (เช่น งาน / ส่วนตัว)
2. **Windows 11 + Windows 10**
3. **Windows 11 + Linux** (ข้ามไปได้ ถ้าต้องการ)
คำตอบนี้เน้น **Windows 11 + Windows 11**
---
## ✅ สิ่งที่ต้องเตรียม
* แฟลชไดรฟ์ ≥ **8GB**
* ไฟล์ **Windows 11 ISO**
* โปรแกรม **Rufus**
* พื้นที่ว่างใน Disk อย่างน้อย **50–100GB**
* แนะนำให้ **สำรองข้อมูลก่อน**
---
## 🛠� ขั้นตอนที่ 1: แบ่งพาร์ทิชัน (ไม่ลบข้อมูล)
1. กด **Win + X → Disk Management**
2. คลิกขวาไดรฟ์ `C:` → **Shrink Volume**
3. ใส่ขนาดที่ต้องการ (เช่น 100000 MB = 100GB)
4. จะได้พื้นที่ **Unallocated (ว่าง)** ← *อย่าสร้างฟอร์แมต*
📌 พื้นที่นี้ไว้ลง Windows ตัวที่ 2
---
## 🔥 ขั้นตอนที่ 2: สร้าง USB Boot Windows 11
1. เปิด **Rufus**
2. เลือก
* Device → USB
* Boot selection → Windows 11 ISO
* Partition scheme → **GPT**
* Target system → **UEFI**
3. กด **Start**
4. (ถ้าเครื่องเก่า เลือก bypass TPM / Secure Boot ได้)
---
## 🚀 ขั้นตอนที่ 3: ติดตั้ง Windows 11 ตัวที่ 2
1. รีสตาร์ทเครื่อง → กด **F12 / F11 / Esc** (เลือก Boot Menu)
2. เลือกบูตจาก **USB**
3. เลือก **Custom: Install Windows only**
4. เลือกพื้นที่ **Unallocated**
5. กด **Next** → รอติดตั้ง
⚠️ ห้ามเลือก Drive C: เดิมเด็ดขาด
---
## 🔁 ขั้นตอนที่ 4: เลือก OS ตอนเปิดเครื่อง
หลังติดตั้งเสร็จ ทุกครั้งที่เปิดเครื่องจะขึ้นเมนู:
```
Choose an operating system
• Windows 11
• Windows 11
```
---
## ✏️ เปลี่ยนชื่อ / ตั้งค่า OS (แนะนำ)
1. เข้า Windows
2. กด **Win + R → msconfig**
3. แท็บ **Boot**
4. เปลี่ยนชื่อ เช่น
* Windows 11 – Work
* Windows 11 – Personal
5. ตั้ง Default OS และ Timeout
---
## 🧠 คำแนะนำจากประสบการณ์
* ใช้ **SSD ลูกเดียวก็ได้** (แต่ 2 ลูกจะเสถียรกว่า)
* แยกไว้:
* OS 1 → เทรด / EA / งาน
* OS 2 → ใช้ทั่วไป / ทดลองโปรแกรม
* ถ้าใช้ EA / MT4 / MT5 → dual boot ช่วยลดปัญหา crash
-------------------------------------------------------------
0 comments | Write Comment
ผมอธิบายแบบ **ทำจริงได้ ปลอดภัย และไม่ลบข้อมูลเดิม** 👇
---
## 🧩 รูปแบบที่นิยม
1. **Windows 11 + Windows 11** (เช่น งาน / ส่วนตัว)
2. **Windows 11 + Windows 10**
3. **Windows 11 + Linux** (ข้ามไปได้ ถ้าต้องการ)
คำตอบนี้เน้น **Windows 11 + Windows 11**
---
## ✅ สิ่งที่ต้องเตรียม
* แฟลชไดรฟ์ ≥ **8GB**
* ไฟล์ **Windows 11 ISO**
* โปรแกรม **Rufus**
* พื้นที่ว่างใน Disk อย่างน้อย **50–100GB**
* แนะนำให้ **สำรองข้อมูลก่อน**
---
## 🛠� ขั้นตอนที่ 1: แบ่งพาร์ทิชัน (ไม่ลบข้อมูล)
1. กด **Win + X → Disk Management**
2. คลิกขวาไดรฟ์ `C:` → **Shrink Volume**
3. ใส่ขนาดที่ต้องการ (เช่น 100000 MB = 100GB)
4. จะได้พื้นที่ **Unallocated (ว่าง)** ← *อย่าสร้างฟอร์แมต*
📌 พื้นที่นี้ไว้ลง Windows ตัวที่ 2
---
## 🔥 ขั้นตอนที่ 2: สร้าง USB Boot Windows 11
1. เปิด **Rufus**
2. เลือก
* Device → USB
* Boot selection → Windows 11 ISO
* Partition scheme → **GPT**
* Target system → **UEFI**
3. กด **Start**
4. (ถ้าเครื่องเก่า เลือก bypass TPM / Secure Boot ได้)
---
## 🚀 ขั้นตอนที่ 3: ติดตั้ง Windows 11 ตัวที่ 2
1. รีสตาร์ทเครื่อง → กด **F12 / F11 / Esc** (เลือก Boot Menu)
2. เลือกบูตจาก **USB**
3. เลือก **Custom: Install Windows only**
4. เลือกพื้นที่ **Unallocated**
5. กด **Next** → รอติดตั้ง
⚠️ ห้ามเลือก Drive C: เดิมเด็ดขาด
---
## 🔁 ขั้นตอนที่ 4: เลือก OS ตอนเปิดเครื่อง
หลังติดตั้งเสร็จ ทุกครั้งที่เปิดเครื่องจะขึ้นเมนู:
```
Choose an operating system
• Windows 11
• Windows 11
```
---
## ✏️ เปลี่ยนชื่อ / ตั้งค่า OS (แนะนำ)
1. เข้า Windows
2. กด **Win + R → msconfig**
3. แท็บ **Boot**
4. เปลี่ยนชื่อ เช่น
* Windows 11 – Work
* Windows 11 – Personal
5. ตั้ง Default OS และ Timeout
---
## 🧠 คำแนะนำจากประสบการณ์
* ใช้ **SSD ลูกเดียวก็ได้** (แต่ 2 ลูกจะเสถียรกว่า)
* แยกไว้:
* OS 1 → เทรด / EA / งาน
* OS 2 → ใช้ทั่วไป / ทดลองโปรแกรม
* ถ้าใช้ EA / MT4 / MT5 → dual boot ช่วยลดปัญหา crash
-------------------------------------------------------------
windows ขึ้น Recovery 0xc0000185 แก้ไขอย่างไร
อาการ **Windows ขึ้นหน้า Recovery พร้อม Error code: 0xc0000185** หมายความว่า
👉 **Windows ไม่สามารถอ่านไฟล์บูต (Boot Configuration Data – BCD) หรืออุปกรณ์บูตมีปัญหา**
มักเกิดจาก
* เครื่องดับ/รีสตาร์ทผิดปกติ
* ฮาร์ดดิสก์หรือ SSD มีปัญหา
* ไฟล์บูตเสีย
* ถอดปลั๊ก/ถอด HDD ระหว่างเปิดเครื่อง
---
## วิธีแก้ไข (เรียงจากง่าย → ยาก)
### ✅ วิธีที่ 1: Restart แบบปกติ
บางครั้งเป็นแค่ error ชั่วคราว
* กด **Enter** หรือ **F8** → Restart
ถ้ายังขึ้นอีก → ไปวิธีถัดไป
---
### ✅ วิธีที่ 2: Automatic Repair (แนะนำ)
1. ที่หน้า Recovery กด **F8**
2. เลือก
**Troubleshoot → Advanced options → Startup Repair**
3. เลือก Windows ที่ใช้งาน
4. รอให้ระบบซ่อมอัตโนมัติ
> ถ้าโชคดี เครื่องจะบูตเข้า Windows ได้เลย
---
### ✅ วิธีที่ 3: Repair BCD (ได้ผลบ่อยมาก)
ต้องเข้า **Command Prompt**
1. ที่หน้า Recovery
**Troubleshoot → Advanced options → Command Prompt**
2. พิมพ์ทีละบรรทัด (กด Enter ทุกบรรทัด)
```cmd
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
```
3. ถ้าถาม Add installation? → พิมพ์ **Y**
4. Restart เครื่อง
---
### ⚠️ ถ้าเจอ `Access is denied` ตอน /fixboot
ให้ใช้คำสั่งนี้เพิ่ม:
```cmd
diskpart
list disk
select disk 0
list vol
select vol X (เลือกตัวที่เป็น EFI / FAT32)
assign letter=S:
exit
```
แล้วพิมพ์ต่อ:
```cmd
bcdboot C:\Windows /s S: /f UEFI
```
---
### ✅ วิธีที่ 4: เช็ค HDD / SSD
ถ้าเครื่องยังเข้าไม่ได้ อาจเป็นฮาร์ดดิสก์เริ่มเสีย
ใน Command Prompt:
```cmd
chkdsk C: /f /r
```
> ใช้เวลานาน แต่ช่วยตรวจ Bad sector
---
### 🚨 วิธีสุดท้าย: ลง Windows ใหม่
ถ้า
* ซ่อมบูตไม่หาย
* HDD/SSD ตรวจเจอ error
* เครื่องวน Recovery ตลอด
แนะนำ:
* สำรองข้อมูล (ถอด HDD ไปต่อเครื่องอื่น)
* ลง Windows ใหม่
---
## สรุปสั้น ๆ
| สาเหตุ | วิธีแก้ |
| -------------- | ------------------------ |
| ไฟล์บูตเสีย | Startup Repair / bootrec |
| ดับกระทันหัน | Repair BCD |
| HDD/SSD เสื่อม | chkdsk / เปลี่ยนไดรฟ์ |
| ระบบพังหนัก | ลง Windows ใหม่ |
---
ถ้าบอกผมได้ว่า
* 💻 เป็น **Notebook / PC**
* 🧠 ใช้ **Windows 10 หรือ 11**
* 💾 HDD หรือ SSD / NVMe
* 🔁 ก่อนหน้าดับไฟ หรืออัปเดต Windows ไหม
ผมจะไล่ขั้นตอนให้ตรงเครื่องคุณแบบ **แก้จบทีละคลิก** 👍
-----------------------------------------------------
โอเคครับ ถ้า **ก่อนหน้าดับไฟ** → เคสนี้พบบ่อยมาก และส่วนใหญ่ **แก้ได้โดยไม่ต้องลง Windows ใหม่** 👍
สาเหตุหลักคือ
🔹 ไฟดับทำให้ **ไฟล์บูต (BCD) หรือโครงสร้างดิสก์เสียชั่วคราว**
🔹 ไม่ได้หมายความว่า HDD/SSD พังทันที
---
## ✅ แนะนำให้ทำตามลำดับนี้ (โอกาสหายสูง)
### 🔹 ขั้นตอนที่ 1: Automatic Startup Repair
1. ที่หน้า **Recovery (0xc0000185)**
2. กด **F8**
3. เลือก
**Troubleshoot → Advanced options → Startup Repair**
4. เลือก Windows
5. รอจนเสร็จ แล้วรีสตาร์ต
👉 ถ้าเข้า Windows ได้ = จบเลย
---
### 🔹 ขั้นตอนที่ 2: ซ่อมไฟล์บูต (วิธีที่ได้ผลบ่อยที่สุด)
ถ้ายังไม่หาย
1. เข้า
**Troubleshoot → Advanced options → Command Prompt**
2. พิมพ์ทีละบรรทัด
```cmd
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
```
ถ้าถาม Add installation? → กด **Y**
แล้ว Restart
---
### ⚠️ ถ้าเจอข้อความ `Access is denied`
เกิดบ่อยใน Windows 10/11 (UEFI)
ให้ทำแบบนี้แทน 👇
```cmd
diskpart
list disk
select disk 0
list vol
```
หา Volume ที่เป็น
* FAT32
* Type = System / EFI
จากนั้น:
```cmd
select vol X
assign letter=S:
exit
```
แล้วรัน
```cmd
bcdboot C:\Windows /s S: /f UEFI
```
Restart เครื่อง
---
### 🔹 ขั้นตอนที่ 3: ตรวจดิสก์ (กันข้อมูลเสียซ้ำ)
เมื่อบูตได้แล้ว (หรือจาก Command Prompt)
```cmd
chkdsk C: /f /r
```
> ใช้เวลานาน แต่ช่วยซ่อม Sector ที่เสียจากไฟดับ
---
## 🧠 คำแนะนำหลังเข้า Windows ได้
เพื่อไม่ให้เกิดซ้ำ:
* 🔌 ใช้ **ปลั๊กกันไฟกระชาก / UPS**
* ❌ หลีกเลี่ยงปิดเครื่องด้วยการถอดปลั๊ก
* 🔄 อย่าปิดเครื่องระหว่าง Windows Update
* 💾 สำรองข้อมูลสำคัญไว้เสมอ
------------------------------------
0 comments | Write Comment
👉 **Windows ไม่สามารถอ่านไฟล์บูต (Boot Configuration Data – BCD) หรืออุปกรณ์บูตมีปัญหา**
มักเกิดจาก
* เครื่องดับ/รีสตาร์ทผิดปกติ
* ฮาร์ดดิสก์หรือ SSD มีปัญหา
* ไฟล์บูตเสีย
* ถอดปลั๊ก/ถอด HDD ระหว่างเปิดเครื่อง
---
## วิธีแก้ไข (เรียงจากง่าย → ยาก)
### ✅ วิธีที่ 1: Restart แบบปกติ
บางครั้งเป็นแค่ error ชั่วคราว
* กด **Enter** หรือ **F8** → Restart
ถ้ายังขึ้นอีก → ไปวิธีถัดไป
---
### ✅ วิธีที่ 2: Automatic Repair (แนะนำ)
1. ที่หน้า Recovery กด **F8**
2. เลือก
**Troubleshoot → Advanced options → Startup Repair**
3. เลือก Windows ที่ใช้งาน
4. รอให้ระบบซ่อมอัตโนมัติ
> ถ้าโชคดี เครื่องจะบูตเข้า Windows ได้เลย
---
### ✅ วิธีที่ 3: Repair BCD (ได้ผลบ่อยมาก)
ต้องเข้า **Command Prompt**
1. ที่หน้า Recovery
**Troubleshoot → Advanced options → Command Prompt**
2. พิมพ์ทีละบรรทัด (กด Enter ทุกบรรทัด)
```cmd
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
```
3. ถ้าถาม Add installation? → พิมพ์ **Y**
4. Restart เครื่อง
---
### ⚠️ ถ้าเจอ `Access is denied` ตอน /fixboot
ให้ใช้คำสั่งนี้เพิ่ม:
```cmd
diskpart
list disk
select disk 0
list vol
select vol X (เลือกตัวที่เป็น EFI / FAT32)
assign letter=S:
exit
```
แล้วพิมพ์ต่อ:
```cmd
bcdboot C:\Windows /s S: /f UEFI
```
---
### ✅ วิธีที่ 4: เช็ค HDD / SSD
ถ้าเครื่องยังเข้าไม่ได้ อาจเป็นฮาร์ดดิสก์เริ่มเสีย
ใน Command Prompt:
```cmd
chkdsk C: /f /r
```
> ใช้เวลานาน แต่ช่วยตรวจ Bad sector
---
### 🚨 วิธีสุดท้าย: ลง Windows ใหม่
ถ้า
* ซ่อมบูตไม่หาย
* HDD/SSD ตรวจเจอ error
* เครื่องวน Recovery ตลอด
แนะนำ:
* สำรองข้อมูล (ถอด HDD ไปต่อเครื่องอื่น)
* ลง Windows ใหม่
---
## สรุปสั้น ๆ
| สาเหตุ | วิธีแก้ |
| -------------- | ------------------------ |
| ไฟล์บูตเสีย | Startup Repair / bootrec |
| ดับกระทันหัน | Repair BCD |
| HDD/SSD เสื่อม | chkdsk / เปลี่ยนไดรฟ์ |
| ระบบพังหนัก | ลง Windows ใหม่ |
---
ถ้าบอกผมได้ว่า
* 💻 เป็น **Notebook / PC**
* 🧠 ใช้ **Windows 10 หรือ 11**
* 💾 HDD หรือ SSD / NVMe
* 🔁 ก่อนหน้าดับไฟ หรืออัปเดต Windows ไหม
ผมจะไล่ขั้นตอนให้ตรงเครื่องคุณแบบ **แก้จบทีละคลิก** 👍
-----------------------------------------------------
โอเคครับ ถ้า **ก่อนหน้าดับไฟ** → เคสนี้พบบ่อยมาก และส่วนใหญ่ **แก้ได้โดยไม่ต้องลง Windows ใหม่** 👍
สาเหตุหลักคือ
🔹 ไฟดับทำให้ **ไฟล์บูต (BCD) หรือโครงสร้างดิสก์เสียชั่วคราว**
🔹 ไม่ได้หมายความว่า HDD/SSD พังทันที
---
## ✅ แนะนำให้ทำตามลำดับนี้ (โอกาสหายสูง)
### 🔹 ขั้นตอนที่ 1: Automatic Startup Repair
1. ที่หน้า **Recovery (0xc0000185)**
2. กด **F8**
3. เลือก
**Troubleshoot → Advanced options → Startup Repair**
4. เลือก Windows
5. รอจนเสร็จ แล้วรีสตาร์ต
👉 ถ้าเข้า Windows ได้ = จบเลย
---
### 🔹 ขั้นตอนที่ 2: ซ่อมไฟล์บูต (วิธีที่ได้ผลบ่อยที่สุด)
ถ้ายังไม่หาย
1. เข้า
**Troubleshoot → Advanced options → Command Prompt**
2. พิมพ์ทีละบรรทัด
```cmd
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
```
ถ้าถาม Add installation? → กด **Y**
แล้ว Restart
---
### ⚠️ ถ้าเจอข้อความ `Access is denied`
เกิดบ่อยใน Windows 10/11 (UEFI)
ให้ทำแบบนี้แทน 👇
```cmd
diskpart
list disk
select disk 0
list vol
```
หา Volume ที่เป็น
* FAT32
* Type = System / EFI
จากนั้น:
```cmd
select vol X
assign letter=S:
exit
```
แล้วรัน
```cmd
bcdboot C:\Windows /s S: /f UEFI
```
Restart เครื่อง
---
### 🔹 ขั้นตอนที่ 3: ตรวจดิสก์ (กันข้อมูลเสียซ้ำ)
เมื่อบูตได้แล้ว (หรือจาก Command Prompt)
```cmd
chkdsk C: /f /r
```
> ใช้เวลานาน แต่ช่วยซ่อม Sector ที่เสียจากไฟดับ
---
## 🧠 คำแนะนำหลังเข้า Windows ได้
เพื่อไม่ให้เกิดซ้ำ:
* 🔌 ใช้ **ปลั๊กกันไฟกระชาก / UPS**
* ❌ หลีกเลี่ยงปิดเครื่องด้วยการถอดปลั๊ก
* 🔄 อย่าปิดเครื่องระหว่าง Windows Update
* 💾 สำรองข้อมูลสำคัญไว้เสมอ
------------------------------------
การแก้ไข smf error Fatal error: Call to undefined function idna_maps_not_std3().
smf error Fatal error: Uncaught Error: Call to undefined function idna_maps_not_std3() in C:\inetpub\vhosts\junjao.com\httpdocs\board\Sources\Class-Punycode.php:537 Stack trace: #0 C:\inetpub\vhosts\junjao.com\httpdocs\board\Sources\Class-Punycode.php(280): Punycode->preprocess() #1 C:\inetpub\vhosts\junjao.com\httpdocs\board\Sources\Class-Punycode.php(148): Punycode->decode() #2 C:\inetpub\vhosts\junjao.com\httpdocs\board\Sources\Subs-Compat.php(493): Punycode->encode() #3 C:\inetpub\vhosts\junjao.com\httpdocs\board\Sources\Subs.php(8055): idn_to_ascii() #4 C:\inetpub\vhosts\junjao.com\httpdocs\board\Sources\Subs.php(6135): iri_to_url() #5 C:\inetpub\vhosts\junjao.com\httpdocs\board\Sources\ScheduledTasks.php(1151): fetch_web_data() #6 C:\inetpub\vhosts\junjao.com\httpdocs\board\install.php(1837): scheduled_fetchSMfiles() #7 C:\inetpub\vhosts\junjao.com\httpdocs\board\install.php(164): DeleteInstall() #8 {main} thrown in C:\inetpub\vhosts\junjao.com\httpdocs\board\Sources\Class-Punycode.php on line 537
แก้ไขอย่างไร
ข้อผิดพลาดนี้ใน **SMF (Simple Machines Forum)**
```
Fatal error: Uncaught Error: Call to undefined function idna_maps_not_std3()
```
หมายความว่า PHP ของเซิร์ฟเวอร์คุณ **ไม่มีฟังก์ชัน `idna_maps_not_std3()`** ซึ่งมาจาก **PHP extension ชื่อ intl (Internationalization extension)** — โดยเฉพาะ **ฟังก์ชันที่ใช้กับ IDN (Internationalized Domain Names)**
---
### 🔧 วิธีแก้ไขหลัก (แนะนำ)
ให้เปิดใช้งานหรือเปิดติดตั้ง **PHP intl extension**
#### ✅ ถ้าใช้ Windows Server (Plesk / IIS)
1. เข้าหน้า **Plesk** → ไปที่
**Tools & Settings → PHP Settings → PHP Extensions**
2. มองหา **intl** แล้วติ๊ก ✅ เปิดใช้งาน
3. หรือถ้าจัดการไฟล์ `php.ini` เอง ให้แก้ไฟล์:
```
extension=intl
```
(เอาเครื่องหมาย `;` ออกจากหน้า extension ถ้ามี)
4. จากนั้น **restart IIS หรือ Apache / PHP-FPM**
---
### 🧩 วิธีตรวจสอบว่าติดตั้งสำเร็จหรือไม่
สร้างไฟล์ชื่อ `phpinfo.php` ไว้ในโฟลเดอร์เว็บ (เช่น `httpdocs/board/phpinfo.php`)
ใส่โค้ด:
```php
<?php phpinfo(); ?>
```
เปิดในเว็บเบราว์เซอร์ เช่น
`https://www.junjao.com/board/phpinfo.php`
แล้วดูว่ามีส่วนหัว **intl** แสดงอยู่หรือไม่
ถ้ามี = ใช้งานได้แล้ว ✅
ถ้าไม่มี = extension ยังไม่เปิดใช้งาน ❌
---
### ⚙️ ทางแก้ชั่วคราว (ถ้ายังเปิด intl ไม่ได้)
บางเวอร์ชันของ SMF 2.1.x สามารถแก้ได้โดย **ปิดการใช้ IDN (Punycode)** ชั่วคราว:
1. เปิดไฟล์:
```
Sources/Subs-Compat.php
```
2. หาโค้ดที่มี `idn_to_ascii(` แล้วใส่เงื่อนไขครอบไว้แบบนี้:
```php
if (function_exists('idn_to_ascii'))
$domain = idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46);
else
$domain = $domain; // fallback ป้องกัน error
```
แต่วิธีนี้เป็นการ "ข้าม" การแปลงชื่อโดเมนสากลเท่านั้น ควรใช้ชั่วคราวเท่านั้น ⚠️
---
### 💡 สรุปสั้น ๆ
| สาเหตุ | วิธีแก้หลัก | วิธีชั่วคราว |
| -------------------------------------- | ---------------------------------- | ---------------------------------------------------- |
| PHP ไม่มีฟังก์ชัน idna_maps_not_std3() | เปิดหรือเพิ่ม PHP extension `intl` | แก้ไฟล์ Subs-Compat.php ให้ตรวจสอบ function_exists() |
---
ถ้าคุณบอกผมได้ว่า
* ใช้ **PHP version** อะไร (ดูจาก Plesk หรือ phpinfo)
* ใช้ **SMF version** อะไร (เช่น 2.1.3 หรือ 2.1.4)
----------------------------------
0 comments | Write Comment
แก้ไขอย่างไร
ข้อผิดพลาดนี้ใน **SMF (Simple Machines Forum)**
```
Fatal error: Uncaught Error: Call to undefined function idna_maps_not_std3()
```
หมายความว่า PHP ของเซิร์ฟเวอร์คุณ **ไม่มีฟังก์ชัน `idna_maps_not_std3()`** ซึ่งมาจาก **PHP extension ชื่อ intl (Internationalization extension)** — โดยเฉพาะ **ฟังก์ชันที่ใช้กับ IDN (Internationalized Domain Names)**
---
### 🔧 วิธีแก้ไขหลัก (แนะนำ)
ให้เปิดใช้งานหรือเปิดติดตั้ง **PHP intl extension**
#### ✅ ถ้าใช้ Windows Server (Plesk / IIS)
1. เข้าหน้า **Plesk** → ไปที่
**Tools & Settings → PHP Settings → PHP Extensions**
2. มองหา **intl** แล้วติ๊ก ✅ เปิดใช้งาน
3. หรือถ้าจัดการไฟล์ `php.ini` เอง ให้แก้ไฟล์:
```
extension=intl
```
(เอาเครื่องหมาย `;` ออกจากหน้า extension ถ้ามี)
4. จากนั้น **restart IIS หรือ Apache / PHP-FPM**
---
### 🧩 วิธีตรวจสอบว่าติดตั้งสำเร็จหรือไม่
สร้างไฟล์ชื่อ `phpinfo.php` ไว้ในโฟลเดอร์เว็บ (เช่น `httpdocs/board/phpinfo.php`)
ใส่โค้ด:
```php
<?php phpinfo(); ?>
```
เปิดในเว็บเบราว์เซอร์ เช่น
`https://www.junjao.com/board/phpinfo.php`
แล้วดูว่ามีส่วนหัว **intl** แสดงอยู่หรือไม่
ถ้ามี = ใช้งานได้แล้ว ✅
ถ้าไม่มี = extension ยังไม่เปิดใช้งาน ❌
---
### ⚙️ ทางแก้ชั่วคราว (ถ้ายังเปิด intl ไม่ได้)
บางเวอร์ชันของ SMF 2.1.x สามารถแก้ได้โดย **ปิดการใช้ IDN (Punycode)** ชั่วคราว:
1. เปิดไฟล์:
```
Sources/Subs-Compat.php
```
2. หาโค้ดที่มี `idn_to_ascii(` แล้วใส่เงื่อนไขครอบไว้แบบนี้:
```php
if (function_exists('idn_to_ascii'))
$domain = idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46);
else
$domain = $domain; // fallback ป้องกัน error
```
แต่วิธีนี้เป็นการ "ข้าม" การแปลงชื่อโดเมนสากลเท่านั้น ควรใช้ชั่วคราวเท่านั้น ⚠️
---
### 💡 สรุปสั้น ๆ
| สาเหตุ | วิธีแก้หลัก | วิธีชั่วคราว |
| -------------------------------------- | ---------------------------------- | ---------------------------------------------------- |
| PHP ไม่มีฟังก์ชัน idna_maps_not_std3() | เปิดหรือเพิ่ม PHP extension `intl` | แก้ไฟล์ Subs-Compat.php ให้ตรวจสอบ function_exists() |
---
ถ้าคุณบอกผมได้ว่า
* ใช้ **PHP version** อะไร (ดูจาก Plesk หรือ phpinfo)
* ใช้ **SMF version** อะไร (เช่น 2.1.3 หรือ 2.1.4)
----------------------------------
smf ขึ้น error ว่า Call to undefined function idna_maps_not_std3() แก้ไขอย่างไร
ข้อผิดพลาด
```
Call to undefined function idna_maps_not_std3()
```
ใน **SMF (Simple Machines Forum)** มักเกิดจากปัญหา **เวอร์ชันของ PHP ที่ไม่รองรับฟังก์ชัน IDN ที่ SMF ใช้** หรือจาก **ไฟล์ IDNA / Subs-Charset.php / Subs.php** ที่เสียหายหรือไม่สมบูรณ์
---
## 🔍 สาเหตุที่พบบ่อย
1. **SMF รุ่นเก่า (เช่น 2.0.x)** ไม่เข้ากับ PHP 8.x
→ ฟังก์ชัน `idna_maps_not_std3()` อยู่ในไฟล์ `Subs-Charset.php` ซึ่ง SMF รุ่นเก่าบางตัวไม่มีหรือถูกเปลี่ยนชื่อ
2. **ไฟล์ของระบบ SMF หาย / ไม่ครบ**
→ โดยเฉพาะไฟล์ในโฟลเดอร์ `/Sources/` ที่มีฟังก์ชันเกี่ยวกับ IDNA
3. **อัปเกรด PHP แล้วไม่ได้อัปเดต SMF**
→ เช่น จาก PHP 7.4 → PHP 8.2 จะทำให้บางฟังก์ชันเก่าหายไป
---
## 🧩 วิธีตรวจสอบเบื้องต้น
1. เปิดไฟล์
```
Sources/Subs-Charset.php
```
แล้วค้นหาคำว่า
```
function idna_maps_not_std3(
```
ถ้าไม่มี แปลว่า SMF รุ่นนี้ไม่รองรับฟังก์ชันนี้
2. ตรวจสอบเวอร์ชัน PHP
```bash
php -v
```
ถ้าเป็น PHP 8.1+ และ SMF เป็นรุ่น 2.0.x → ต้องอัปเดต
---
## ✅ วิธีแก้ไข
### วิธีที่ 1: อัปเกรด SMF
อัปเกรดเป็น **SMF 2.1.x** (เช่น 2.1.4 หรือใหม่กว่า)
เพราะรุ่นนี้รองรับ PHP 8.x และแก้ปัญหานี้แล้ว
ลิงก์ดาวน์โหลดจากเว็บทางการ:
👉 [https://www.simplemachines.org/download/](https://www.simplemachines.org/download/)
> ก่อนอัปเกรด ให้สำรองไฟล์และฐานข้อมูลทั้งหมดก่อนทุกครั้ง
---
### วิธีที่ 2: แก้ไฟล์ชั่วคราว (ถ้ายังไม่อัปเกรดได้)
> ⚠️ วิธีนี้เป็น "วิธีแก้ชั่วคราว" สำหรับผู้ที่ต้องการให้เว็บกลับมาใช้งานได้ก่อน
เปิดไฟล์ `Sources/Idna.php` หรือ `Subs-Charset.php` แล้วเพิ่มฟังก์ชันเปล่าไว้ก่อน
```php
if (!function_exists('idna_maps_not_std3')) {
function idna_maps_not_std3($codepoint) {
// ฟังก์ชันนี้ใช้ในกระบวนการแปลงโดเมน IDN
// หากไม่ใช้โดเมนต่างประเทศ ปล่อยว่างไว้ได้
return false;
}
}
```
บันทึกแล้วรีเฟรชหน้าเว็บใหม่
---
### วิธีที่ 3: กลับไปใช้ PHP รุ่นเก่าชั่วคราว
หากเว็บโฮสต์อนุญาต ให้ตั้ง PHP เป็น **7.4** หรือ **7.3**
(ใช้ได้ดีกับ SMF 2.0.x เดิม)
ตัวอย่างบน Plesk:
* ไปที่ **Websites & Domains → PHP Settings**
* เปลี่ยน **PHP version** → 7.4
* บันทึกและรีโหลดหน้าเว็บ
---
## 🧠 สรุป
| ปัญหา | สาเหตุ | วิธีแก้แนะนำ |
| ------------------------------------------------- | ----------------------- | ------------------------------------- |
| `Call to undefined function idna_maps_not_std3()` | SMF รุ่นเก่า + PHP ใหม่ | ✅ อัปเกรด SMF เป็น 2.1.x |
| | ไฟล์ระบบหาย | ✅ อัปโหลดไฟล์ `Subs-Charset.php` ใหม่ |
| | ต้องการแก้เฉพาะหน้า | ⚙️ เพิ่มฟังก์ชันเปล่าชั่วคราวในไฟล์ |
----------------------------
0 comments | Write Comment
```
Call to undefined function idna_maps_not_std3()
```
ใน **SMF (Simple Machines Forum)** มักเกิดจากปัญหา **เวอร์ชันของ PHP ที่ไม่รองรับฟังก์ชัน IDN ที่ SMF ใช้** หรือจาก **ไฟล์ IDNA / Subs-Charset.php / Subs.php** ที่เสียหายหรือไม่สมบูรณ์
---
## 🔍 สาเหตุที่พบบ่อย
1. **SMF รุ่นเก่า (เช่น 2.0.x)** ไม่เข้ากับ PHP 8.x
→ ฟังก์ชัน `idna_maps_not_std3()` อยู่ในไฟล์ `Subs-Charset.php` ซึ่ง SMF รุ่นเก่าบางตัวไม่มีหรือถูกเปลี่ยนชื่อ
2. **ไฟล์ของระบบ SMF หาย / ไม่ครบ**
→ โดยเฉพาะไฟล์ในโฟลเดอร์ `/Sources/` ที่มีฟังก์ชันเกี่ยวกับ IDNA
3. **อัปเกรด PHP แล้วไม่ได้อัปเดต SMF**
→ เช่น จาก PHP 7.4 → PHP 8.2 จะทำให้บางฟังก์ชันเก่าหายไป
---
## 🧩 วิธีตรวจสอบเบื้องต้น
1. เปิดไฟล์
```
Sources/Subs-Charset.php
```
แล้วค้นหาคำว่า
```
function idna_maps_not_std3(
```
ถ้าไม่มี แปลว่า SMF รุ่นนี้ไม่รองรับฟังก์ชันนี้
2. ตรวจสอบเวอร์ชัน PHP
```bash
php -v
```
ถ้าเป็น PHP 8.1+ และ SMF เป็นรุ่น 2.0.x → ต้องอัปเดต
---
## ✅ วิธีแก้ไข
### วิธีที่ 1: อัปเกรด SMF
อัปเกรดเป็น **SMF 2.1.x** (เช่น 2.1.4 หรือใหม่กว่า)
เพราะรุ่นนี้รองรับ PHP 8.x และแก้ปัญหานี้แล้ว
ลิงก์ดาวน์โหลดจากเว็บทางการ:
👉 [https://www.simplemachines.org/download/](https://www.simplemachines.org/download/)
> ก่อนอัปเกรด ให้สำรองไฟล์และฐานข้อมูลทั้งหมดก่อนทุกครั้ง
---
### วิธีที่ 2: แก้ไฟล์ชั่วคราว (ถ้ายังไม่อัปเกรดได้)
> ⚠️ วิธีนี้เป็น "วิธีแก้ชั่วคราว" สำหรับผู้ที่ต้องการให้เว็บกลับมาใช้งานได้ก่อน
เปิดไฟล์ `Sources/Idna.php` หรือ `Subs-Charset.php` แล้วเพิ่มฟังก์ชันเปล่าไว้ก่อน
```php
if (!function_exists('idna_maps_not_std3')) {
function idna_maps_not_std3($codepoint) {
// ฟังก์ชันนี้ใช้ในกระบวนการแปลงโดเมน IDN
// หากไม่ใช้โดเมนต่างประเทศ ปล่อยว่างไว้ได้
return false;
}
}
```
บันทึกแล้วรีเฟรชหน้าเว็บใหม่
---
### วิธีที่ 3: กลับไปใช้ PHP รุ่นเก่าชั่วคราว
หากเว็บโฮสต์อนุญาต ให้ตั้ง PHP เป็น **7.4** หรือ **7.3**
(ใช้ได้ดีกับ SMF 2.0.x เดิม)
ตัวอย่างบน Plesk:
* ไปที่ **Websites & Domains → PHP Settings**
* เปลี่ยน **PHP version** → 7.4
* บันทึกและรีโหลดหน้าเว็บ
---
## 🧠 สรุป
| ปัญหา | สาเหตุ | วิธีแก้แนะนำ |
| ------------------------------------------------- | ----------------------- | ------------------------------------- |
| `Call to undefined function idna_maps_not_std3()` | SMF รุ่นเก่า + PHP ใหม่ | ✅ อัปเกรด SMF เป็น 2.1.x |
| | ไฟล์ระบบหาย | ✅ อัปโหลดไฟล์ `Subs-Charset.php` ใหม่ |
| | ต้องการแก้เฉพาะหน้า | ⚙️ เพิ่มฟังก์ชันเปล่าชั่วคราวในไฟล์ |
----------------------------
