ข้อผิดพลาด
```
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` ใหม่ |
| | ต้องการแก้เฉพาะหน้า | ⚙️ เพิ่มฟังก์ชันเปล่าชั่วคราวในไฟล์ |
----------------------------