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

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

ด้วยลักษณะเช่นนี้ ไฟล์ 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.php3️⃣ 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 ก็จะไปที่บรรทัดของการตั้งค่าที่กดทางซ้ายทันที
- ค่าคงที่การตั้งค่า (define) อยู่ด้านบน: ค่าคงที่ส่วนใหญ่ที่เกี่ยวกับการตั้งค่า WordPress (define) ต้องกำหนดไว้เหนือบรรทัด /* That’s all, stop editing! Happy publishing. */ หรือก็คือเหนือคอมเมนต์นั้นพอดี WordPress จึงจะโหลดได้ถูกต้องระหว่างเริ่มต้นการตั้งค่า
- การโหลด WordPress เริ่มด้านล่าง: ใต้คอมเมนต์นี้มีการกำหนด [ABSPATH] และโค้ด [require_once( ABSPATH . ‘wp-settings.php’ );] ตั้งแต่วินาทีที่โหลดไฟล์ [wp-settings.php] นี้ ฟังก์ชันหลักของ WordPress ก็เริ่มทำงานจริง
ส่วน WP_MAX_MEMORY_LIMIT คือ “ขีดจำกัดที่ขยายเพิ่มสำหรับผู้ดูแลและการประมวลผลภายใน”
ต้องตั้งค่าทั้งสองอย่างร่วมกัน การควบคุมหน่วยความจำของ WordPress อย่างสมบูรณ์จึงจะเป็นไปได้


/wp-admin/admin-ajax.php เพื่อเรียก AJAX จากเว็บเบราว์เซอร์ ในแดชบอร์ด WordPress ไฟล์นี้จะทำให้มีคำขอ POST ส่งออกไปทุก 15 วินาที


/** 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);🔢 FAQ & เนื้อหาแนะนำ
ประสิทธิภาพ
ปิด WP-Cron และใช้ Cron ของระบบ
วิธีปิด wp-cron.php ที่ทำงานทุกครั้งที่เปิดหน้าเว็บ แล้วย้ายไปใช้ Cron ของเซิร์ฟเวอร์
ตั้งค่า
2 วิธีเลิกถามข้อมูลรับรอง FTP
2 วิธีกำจัดหน้าต่างกรอก FTP ที่โผล่ขึ้นทุกครั้งที่อัปเดตปลั๊กอิน
ข้อผิดพลาด
critical error สาเหตุและวิธีแก้
ขั้นตอนหาสาเหตุและแก้ไขเมื่อมีข้อความ [There has been a critical error] ขึ้นมา
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน