การตั้งค่าพื้นฐาน wp-config.php: ไฟล์ & หน่วยความจำ·รีวิชัน คู่มือตั้งค่าผ่าน SSH, SFTP, cPanel

ประกาศแอฟฟิลิเอต Ver 3.1
ประกาศแอฟฟิลิเอต Ver 3.2 (เฉพาะมือถือ)
สภาพแวดล้อมทดสอบ ตระกูล RHELAlmaLinux 9.8PHP 8.3WordPress 7.1.3ตรวจสอบ 2026-10-11

ไฟล์ wp-config.php คือ ไฟล์ตั้งค่าที่สำคัญที่สุดของเว็บไซต์ WordPress ไฟล์นี้เก็บ ข้อมูลหลักที่ WordPress ต้องใช้ในการเชื่อมต่อฐานข้อมูลและทำงาน จึงเปรียบเสมือนหัวใจของเว็บไซต์

Ⅰ. บทบาทของ wp-config.php

ไฟล์นี้มีการตั้งค่าที่ละเอียดอ่อนดังต่อไปนี้

  • ข้อมูลการเชื่อมต่อฐานข้อมูล
  • ↳ มีข้อมูลที่จำเป็นสำหรับเชื่อมต่อฐานข้อมูลที่เก็บเนื้อหา WordPress เช่น ชื่อฐานข้อมูล MySQL หรือ MariaDB ชื่อผู้ใช้ รหัสผ่าน และโฮสต์
  • คีย์ความปลอดภัยและ salt
  • ↳ สตริงสุ่มที่ไม่ซ้ำกันซึ่งใช้เข้ารหัสเซสชันล็อกอินและคุกกี้ของผู้ใช้เพื่อเสริมความปลอดภัย ถ้าไม่มีคีย์เหล่านี้ เซสชันก็จะไม่ปลอดภัย
  • การตั้งค่าหลักอื่น ๆ
  • ↳ มีการกำหนดค่าคงที่สำคัญที่ควบคุมการทำงานของ WordPress เช่น คำนำหน้าตาราง การเปิด/ปิดโหมดดีบัก และการปิดการแก้ไขไฟล์
ไฟล์ wp-config.php ของ WordPress

ด้วยลักษณะเช่นนี้ ไฟล์ wp-config.php จึงกลายเป็น เป้าหมายแรกของการโจมตีจากผู้โจมตีภายนอก หากตั้งสิทธิ์การเข้าถึงไฟล์ผิดหรือเนื้อหาในไฟล์หลุดออกไป ฐานข้อมูลทั้งหมดอาจรั่วไหล หรือสิทธิ์ผู้ดูแลเว็บไซต์อาจถูกยึด ซึ่งนำไปสู่ ช่องโหว่ด้านความปลอดภัยที่ร้ายแรง ดังนั้นก้าวแรกของการเสริมความปลอดภัย WordPress คือการทำให้ไฟล์นี้ปลอดภัย

1️⃣ ตำแหน่งไฟล์ wp-config.php

wp-config.php อยู่ในโฟลเดอร์บนสุดที่ติดตั้ง WordPress ระดับเดียวกับโฟลเดอร์ [wp-admin]·[wp-content]·[wp-includes] บนโฮสติ้ง cPanel โฟลเดอร์นั้นคือ [public_html] ส่วน VPS จะวางไว้ที่ web root (เช่น [/var/www/html/wp-config.php])

ถ้าไม่เห็นไฟล์ในโฟลเดอร์บนสุด ให้ดูโฟลเดอร์ที่อยู่สูงขึ้นไปหนึ่งระดับ WordPress จะหา wp-config.php ในโฟลเดอร์ติดตั้งก่อน ถ้าไม่มีจึงไปหาและโหลดจากโฟลเดอร์ที่อยู่เหนือขึ้นไปทันที

2️⃣ วิธีเปิด wp-config.php

ใน [File Manager] ของแผงควบคุมโฮสติ้ง ให้ไปที่โฟลเดอร์บนสุด แล้วคลิกขวาที่ wp-config.php และเลือก [Edit] เป็นวิธีแก้ไขได้ทันทีในเบราว์เซอร์โดยไม่ต้องใช้โปรแกรมอื่น

โปรแกรม FTP (FileZilla) ใช้ดาวน์โหลดไฟล์มาที่คอมพิวเตอร์ แก้ไขด้วยโปรแกรมแก้ไข แล้วอัปโหลดกลับ ถ้าเก็บสำเนาต้นฉบับแยกไว้ก่อนอัปโหลด เมื่อเกิดข้อผิดพลาดก็ย้อนกลับได้ทันที

เซิร์ฟเวอร์อย่าง VPS ที่เชื่อมต่อผ่าน SSH ให้รันชื่อโปรแกรมแก้ไข [vi] ตามด้วยพาธไฟล์ และเปิดด้วย [nano] ได้ในแบบเดียวกัน

vi /var/www/html/wp-config.php

3️⃣ wp-config-sample.php และโครงสร้างพื้นฐาน

ไฟล์บีบอัด WordPress ที่ดาวน์โหลดมาใหม่จะไม่มี wp-config.php มีเพียง [wp-config-sample.php] อยู่ในตำแหน่งเดียวกัน เมื่อกรอกข้อมูลฐานข้อมูลในหน้าติดตั้ง WordPress จะสร้าง wp-config.php จากไฟล์นี้ และถ้าคัดลอกแล้วเปลี่ยนชื่อเองก็ได้ผลเหมือนกัน

define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

$table_prefix = 'wp_';

define( 'WP_DEBUG', false );

4 บรรทัด [DB_NAME]·[DB_USER]·[DB_PASSWORD]·[DB_HOST] ใส่ข้อมูลฐานข้อมูลที่ได้จากโฮสติ้ง ถ้าค่าใดค่าหนึ่งผิด จะเห็นข้อผิดพลาด [Error establishing a database connection] แทนเว็บไซต์

8 บรรทัดตั้งแต่ [AUTH_KEY] ถึง [NONCE_SALT] เป็นค่าที่ใช้เข้ารหัสคุกกี้ล็อกอิน ให้ขอชุดใหม่จาก [https://api.wordpress.org/secret-key/1.1/salt/] แล้วแทนที่ทั้งหมด เมื่อเปลี่ยนค่าเหล่านี้ ผู้ใช้ทุกคนที่ล็อกอินอยู่จะถูกออกจากระบบ

[$table_prefix] คือคำนำหน้าที่ต่อหน้าชื่อตารางในฐานข้อมูล ค่าเริ่มต้นคือ [wp_] และใช้แยก WordPress หลายชุดที่ติดตั้งไว้ในฐานข้อมูลเดียวกัน ถ้าเปลี่ยน [WP_DEBUG] เป็น [true] ข้อผิดพลาด PHP จะแสดงบนหน้าจอ เว็บไซต์ที่ใช้งานจริงจึงควรตั้งเป็น [false]

Ⅱ. การตั้งค่าพื้นฐาน wp-config.php หลังติดตั้ง WordPress

บรรทัดตั้งค่าทั้งหมดใส่ไว้เหนือคอมเมนต์ /* That’s all, stop editing! Happy publishing. */ ในตัวจำลองด้านล่าง เลือกวิธีเชื่อมต่อจาก SSH·cPanel·FTP แล้วเปิด wp-config.php ก็จะไปที่บรรทัดของการตั้งค่าที่กดทางซ้ายทันที

⚙️ ตั้งค่า wp-config.phpตัวจำลองการตั้งค่า
/* That’s all, stop editing! Happy publishing. */
ในทางเทคนิค คอมเมนต์นี้ (/* That’s all, stop editing! Happy publishing. */) ไม่ได้ทำหน้าที่พิเศษใด ๆ ในฐานะโค้ด PHP เป็นเพียง คอมเมนต์ธรรมดาเท่านั้น
user_a@server: ~
Last login: Mon Oct 5 14:10:02 2026 from 10.0.0.12
[user_a@server ~]$
แต่คอมเมนต์นี้ทำหน้าที่เป็น ‘เครื่องหมาย‘ ที่ทีม WordPress ทิ้งไว้ให้ผู้ใช้ ในความหมายว่า “ใต้คอมเมนต์นี้มีโค้ดหลักที่ WordPress ต้องใช้ในการทำงาน อย่าแตะต้อง”
  1. ค่าคงที่การตั้งค่า (define) อยู่ด้านบน: ค่าคงที่ส่วนใหญ่ที่เกี่ยวกับการตั้งค่า WordPress (define) ต้องกำหนดไว้เหนือบรรทัด /* That’s all, stop editing! Happy publishing. */ หรือก็คือเหนือคอมเมนต์นั้นพอดี WordPress จึงจะโหลดได้ถูกต้องระหว่างเริ่มต้นการตั้งค่า
  2. การโหลด WordPress เริ่มด้านล่าง: ใต้คอมเมนต์นี้มีการกำหนด [ABSPATH] และโค้ด [require_once( ABSPATH . ‘wp-settings.php’ );] ตั้งแต่วินาทีที่โหลดไฟล์ [wp-settings.php] นี้ ฟังก์ชันหลักของ WordPress ก็เริ่มทำงานจริง
ดังนั้น ถ้าต้องการใส่ การตั้งค่าเพิ่มเติม (เช่น ปิดการแก้ไขไฟล์ด้วย [define(‘DISALLOW_FILE_EDIT’, true);] หรือจำกัดหน่วยความจำด้วย [define(‘WP_MEMORY_LIMIT’, ‘256M’);]) ต้องเขียนไว้ ก่อนที่ไฟล์โหลดหลักของ WordPress จะถูกเรียก หรือก็คือ เหนือคอมเมนต์พอดีจึงจะใช้ได้โดยไม่เกิดข้อผิดพลาด
ใน wp-config-sample.php เหนือคอมเมนต์ [stop editing] พอดีจะมีคอมเมนต์ [Add any custom values between this line and the “stop editing” line.] อีกหนึ่งบรรทัด การตั้งค่าที่เพิ่มเองให้ใส่ไว้ระหว่างคอมเมนต์ทั้งสองนี้
ตั้งค่าหน่วยความจำ WordPress
ในบทช่วยสอน WordPress หรือเอกสารทางการ ส่วนใหญ่จะมีแค่ [define(‘WP_MEMORY_LIMIT’, ‘256M’);] บรรทัดเดียว เท่านั้น
การตั้งค่าหน่วยความจำคือการกำหนดหน่วยความจำสูงสุดที่ WordPress ใช้ได้ใน PHP เพื่อกันข้อผิดพลาดหน่วยความจำไม่พอ (Fatal error: Allowed memory size exhausted) ระหว่างที่ธีมหรือปลั๊กอินทำงาน กล่าวคือเป็น ตัวป้องกันพื้นฐานที่ช่วยให้เว็บไซต์ทำงานได้เสถียรและไม่ใช้ทรัพยากรเกิน.
‘WP_MAX_MEMORY_LIMIT’ คือ โครงสร้างที่ให้ฝั่งแบ็กเอนด์ใช้หน่วยความจำได้มากกว่าฝั่งฟรอนต์เอนด์.
WP_MEMORY_LIMIT คือ “ขีดจำกัดหน่วยความจำสำหรับผู้เข้าชมเว็บไซต์”
ส่วน WP_MAX_MEMORY_LIMIT คือ “ขีดจำกัดที่ขยายเพิ่มสำหรับผู้ดูแลและการประมวลผลภายใน”
ต้องตั้งค่าทั้งสองอย่างร่วมกัน การควบคุมหน่วยความจำของ WordPress อย่างสมบูรณ์จึงจะเป็นไปได้
ถ้าค่าใน wp-config.php มากกว่าค่าใน php.ini หรือการตั้งค่า pool ของ PHP-FPM บนเซิร์ฟเวอร์ ระบบจะใช้ค่าของเซิร์ฟเวอร์
จำกัดรีวิชัน
ไม่จำเป็นต้องติดตั้งปลั๊กอินแยกเพื่อกำหนดจำนวนรีวิชัน ใส่ค่าคงที่ด้านล่างหนึ่งบรรทัดใน wp-config.php ก็ได้ผลเหมือนกัน และไม่มีการตั้งค่าปลั๊กอินค้างอยู่ในฐานข้อมูลให้ต้องลบทีหลัง
รีวิชันของ WordPress ทำให้ข้อมูลก่อนแก้ไขของโพสต์สะสมไปเรื่อย ๆ เว็บไซต์จึงช้าลง โดยเฉพาะเว็บไซต์ WordPress ที่ไม่ได้ติดตั้งแคช หรือแม้ติดตั้งแคชแล้ว ระหว่างทำงานในแดชบอร์ดของหน้าผู้ดูแล โดยเฉพาะเวลาสร้างเนื้อหาในโพสต์หรือเพจ หน้าที่ผู้เข้าชมเห็นก็อาจช้าลงไปด้วย
ตัวอย่างเช่น ถ้าเซิร์ฟเวอร์ใช้ CPU รวมไปราว 50% ไม่ว่าจะใช้ปลั๊กอินแคชตัวไหน ความเร็วของหน้าที่ผู้เข้าชมเห็นก็อาจลดลง
จึงต้องปิดรีวิชันหรือจำกัดจำนวน
ถ้าใช้ WP Rocket หรือ Perfmatters ก็จัดการได้จากหน้าตั้งค่าเช่นกัน WP Rocket ลบรีวิชันที่สะสมไว้แล้วด้วย [Revisions] ในแท็บ [Database] แต่ไม่มีการตั้งค่าจำกัดจำนวน
หน้าจอล้างรีวิชันในฐานข้อมูลของ WP Rocket
Perfmatters กำหนดจำนวนรีวิชันที่เก็บไว้ต่อโพสต์ใน [Limit Post Revisions] และช่วงเวลาบันทึกอัตโนมัติใน [Autosave Interval]
การตั้งค่าจำกัดรีวิชันของ Perfmatters
ปรับช่วงเวลาบันทึกอัตโนมัติของโพสต์
ช่วงเวลาบันทึกอัตโนมัติของโพสต์ใน WordPress ค่าเริ่มต้นคือ 1 นาที เช่น เพิ่มจากค่าเริ่มต้น 60 วินาที → 5 นาที (300 วินาที) ได้
ตั้งค่า Heartbeat
Heartbeat ไม่มีค่าคงที่ให้ใส่ใน wp-config.php จึงปรับผ่านไฟล์นี้ไม่ได้ ถ้าใส่โค้ดด้านล่างใน wp-config.php โค้ดจะทำงานก่อนที่ WordPress จะโหลดฟังก์ชัน [add_action] และเว็บไซต์จะหยุดด้วยข้อผิดพลาด [Call to undefined function add_action()]
‘Heartbeat’ ของ WordPress คือสัญญาณที่ตรวจว่าเซิร์ฟเวอร์กับเว็บไซต์ยังเชื่อมต่อกันอยู่หรือไม่ Heartbeat API ใช้ 
/wp-admin/admin-ajax.php เพื่อเรียก AJAX จากเว็บเบราว์เซอร์ ในแดชบอร์ด WordPress ไฟล์นี้จะทำให้มีคำขอ POST ส่งออกไปทุก 15 วินาที
ตั้งให้ทำงานเฉพาะในหน้าเขียนโพสต์ของผู้ดูแลอย่าง [post.php]·[post-new.php] ได้
WP Rocket: ถ้าใช้อยู่ ให้เลือก [Do not limit]·[Reduce activity]·[Disable] อย่างใดอย่างหนึ่งในแท็บ [Heartbeat] สำหรับหน้าผู้ดูแล ตัวแก้ไขโพสต์ และฟรอนต์เอนด์
หน้าจอตั้งค่า Heartbeat ของ WP Rocket
Perfmatters กำหนดหน้าที่อนุญาตให้ Heartbeat ทำงานใน [Disable Heartbeat] และช่วงห่างของคำขอใน [Heartbeat Frequency]
การตั้งค่า Heartbeat ของ Perfmatters
ถ้าไม่มีปลั๊กอินทั้งสองตัว ก็ไม่ต้องติดตั้งปลั๊กอินเพิ่มเพียงเพราะ Heartbeat เพราะปลั๊กอิน ยังทิ้งค่าการตั้งค่าไว้ในฐานข้อมูลแม้จะลบไปแล้ว ให้ใส่โค้ดด้านล่างใน [functions.php] ของธีมแทน
/** Disable Heartbeat everywhere except post editor */
add_action('init', function() {
    global $pagenow;
    if ($pagenow != 'post.php' && $pagenow != 'post-new.php') {
        wp_deregister_script('heartbeat');
    }
}, 1);
การตั้งค่ารวม
การตั้งค่ารวมคือ wp-config.php ที่ใส่การตั้งค่าทั้งหมดในบทความนี้แล้ว
หน่วยความจำ 2 บรรทัด จำกัดรีวิชัน 3 รายการ และบันทึกอัตโนมัติ 300 วินาที เรียงอยู่เหนือคอมเมนต์ [stop editing]
Heartbeat ไม่ได้อยู่ในการตั้งค่ารวม เพราะถ้าใส่ใน wp-config.php จะเกิดข้อผิดพลาด
กดไอคอนคัดลอกที่มุมขวาบนของหน้าจอ จะคัดลอกเฉพาะบรรทัดที่ต้องใส่
ทำงานในเบราว์เซอร์เท่านั้น ไม่ได้เปลี่ยนไฟล์จริง เลือกวิธีเชื่อมต่อด้านบนแล้วกดชิปตามลำดับเพื่อเปิด wp-config.php ก็จะไปที่บรรทัดของการตั้งค่าที่กดทางซ้าย หรือจะคลิกเทอร์มินัลแล้วพิมพ์คำสั่งและปุ่ม vi เองแทนการกดชิปก็ได้ เซิร์ฟเวอร์จำลองมีเฉพาะไฟล์ที่บทความนี้ต้องใช้ และหน้าจอ cPanel·FileZilla เป็นภาพย่อของหน้าจอจริง

🔢 FAQ & เนื้อหาแนะนำ

ถ้าบรรทัดที่เพิ่งบันทึกขาดเครื่องหมายคำพูดหรือเซมิโคลอน PHP จะอ่าน wp-config.php ไม่จบ และเว็บไซต์จะเปิดไม่ขึ้น ให้ย้อนกลับไปใช้ไฟล์ต้นฉบับที่เก็บไว้ก่อนแก้ แล้วตรวจเฉพาะบรรทัดที่เปลี่ยนอีกครั้ง

บทความความปลอดภัย wp-config.php แนะนำ [600] ที่ให้เฉพาะเจ้าของอ่านและเขียนได้ บนเซิร์ฟเวอร์ที่ PHP ทำงานด้วยบัญชีที่ต่างจากเจ้าของไฟล์ ถ้าตั้ง 600 PHP จะอ่านไฟล์ไม่ได้ จึงควรตรวจทันทีหลังเปลี่ยนว่าเว็บไซต์ยังเปิดได้

เมื่อเปิดใช้ WP Rocket จะใส่บรรทัด [define( ‘WP_CACHE’, true ); // Added by WP Rocket] ไว้บนสุดของไฟล์ และ wp-config.php ของเซิร์ฟเวอร์ที่วัดจริงก็มีบรรทัดนี้อยู่ที่บรรทัดที่ 2 ต้องมีบรรทัดนี้ WordPress จึงจะโหลดไฟล์แคช [advanced-cache.php]

ถ้ามีการกำหนดค่าคงที่เดียวกันไว้แล้วในส่วนบนของไฟล์ PHP จะใช้ค่าที่กำหนดไว้ก่อน และทิ้งไว้เพียงคำเตือน [Constant WP_MEMORY_LIMIT already defined] สำหรับบรรทัดล่าง ให้ค้นชื่อค่าคงที่ทั่วทั้งไฟล์ว่ามีบรรทัดที่โฮสติ้งหรือปลั๊กอินใส่ไว้หรือไม่

🔗 เนื้อหาแนะนำ
ความปลอดภัย ช่องโหว่ด้านความปลอดภัยของ wp-config.php ถ้า wp-config.php หลุดออกไปภายนอก ข้อมูลฐานข้อมูลและคีย์ความปลอดภัยก็จะรั่วไปด้วย บทความนี้สรุปขั้นตอนตรวจตามลำดับ ตั้งแต่สิทธิ์ไฟล์ การบล็อกการเข้าถึงด้วย .htaccess ไปจนถึงการปิดการแก้ไขไฟล์ อ่านบทความ → ไฟล์ wp-config.php ของ WordPress

ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Prove your humanity: 10   +   2   =