ข้ามไปยังเนื้อหา
การตั้งค่า

ไฟล์ wp-config.php ของ WordPress: หน้าที่และวิธีแก้ไข

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

เผยแพร่แล้ว

wp-config.php คือไฟล์ที่บอก WordPress ว่าจะเชื่อมต่อฐานข้อมูลอย่างไรและจะทำงานอย่างไร โดยปกติไฟล์นี้อยู่ในโฟลเดอร์รูทของการติดตั้ง ข้างๆ wp-admin และ wp-content คุณเพิ่มหรือเปลี่ยนการตั้งค่าได้อย่างปลอดภัยเหนือบรรทัด “That’s all, stop editing!” (แปลว่า “เท่านี้แหละ หยุดแก้ไขได้แล้ว!”) และควรปล่อยบล็อกโค้ดสองบล็อกใต้บรรทัดนั้นไว้ตามเดิม สำรองไฟล์ก่อนเสมอ เพราะการพิมพ์ผิดเพียงจุดเดียวอาจทำให้ทั้งไซต์ล่มได้

สิ่งสำคัญ

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

หา wp-config.php ได้ที่ไหน

เชื่อมต่อผ่าน SFTP หรือเปิดตัวจัดการไฟล์ของโฮสติ้ง แล้วไปที่โฟลเดอร์ที่มี wp-admin, wp-includes และ wp-content เอกสารของ WordPress เรียกโฟลเดอร์นี้ว่ารูทของไดเรกทอรีไฟล์ WordPress

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

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

แต่ละส่วนเริ่มต้นทำอะไร

wp-config-sample.php คือไฟล์แม่แบบ และมีส่วนต่างๆ ตามลำดับนี้:

ส่วนเก็บอะไรเปลี่ยนได้ไหม?
DB_NAME, DB_USER, DB_PASSWORD, DB_HOSTข้อมูลเข้าฐานข้อมูล ไฟล์แม่แบบใช้ localhost เป็นโฮสต์ และผู้ให้บริการโฮสติ้งสามารถแจ้งค่าจริงให้คุณได้ได้ เมื่อข้อมูลฐานข้อมูลเปลี่ยน ค่าที่ผิดทำให้เกิดข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล
DB_CHARSET, DB_COLLATEวิธีจัดเก็บข้อความในฐานข้อมูล ค่าเริ่มต้นคือ utf8mb4 และค่าว่างคอมเมนต์ของ DB_COLLATE ในไฟล์แม่แบบบอกว่าอย่าเปลี่ยนหากไม่แน่ใจ
ตั้งแต่ AUTH_KEY ถึง NONCE_SALTคีย์และ salt ความปลอดภัยแปดตัวที่ใช้กับคุกกี้การเข้าสู่ระบบได้ การเปลี่ยนจะทำให้ผู้ใช้ทุกคนออกจากระบบ
$table_prefixข้อความนำหน้าชื่อตารางฐานข้อมูลแต่ละตาราง ค่าเริ่มต้นคือ wp_เฉพาะตอนติดตั้ง เว้นแต่คุณจะเปลี่ยนชื่อตารางและอัปเดตรายการที่บันทึกไว้ในฐานข้อมูลซึ่งมีคำนำหน้านี้ในชื่อด้วย
WP_DEBUGโหมดดีบัก ตั้งเป็น false ในไฟล์แม่แบบได้ คู่มือตำแหน่งไฟล์บันทึกดีบัก แสดงวิธีส่งข้อผิดพลาดไปยังไฟล์
คอมเมนต์ “custom values” (ค่าที่กำหนดเอง)พื้นที่ว่างสำหรับการตั้งค่าของคุณ ซึ่งจบที่บรรทัด “stop editing”ได้ ส่วนที่คุณเพิ่มเข้ามาอยู่ตรงนี้
ABSPATH และบรรทัด wp-settings.phpพาธไปยัง WordPress แล้วตามด้วยบรรทัดที่โหลดส่วนที่เหลือไม่ได้ ปล่อยไว้ตามเดิม

ขอคีย์ใหม่ได้ในคลิกเดียว: บริการคีย์ลับของ WordPress.org จะให้ชุดใหม่ทุกครั้งที่โหลด แทนที่ทั้งแปดบรรทัดด้วยชุดใหม่นั้น

ไฟล์รุ่นเก่าอาจไม่มีคอมเมนต์ “custom values” และเขียนว่า “Happy blogging” แทน “Happy publishing” ทั้งสองแบบใช้งานได้ และกฎยังเหมือนเดิม คือเพิ่มการตั้งค่าเหนือบรรทัดนั้น

การตั้งค่าที่คนนิยมเปลี่ยน

แต่ละรายการใช้แค่หนึ่งบรรทัด ทั้งหมดมาจากเอกสาร wp-config.php และค่าเริ่มต้นมาจาก default-constants.php ของ WordPress

// Memory for the front end, then for wp-admin
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

// Keep at most 3 revisions per post (false turns revisions off)
define( 'WP_POST_REVISIONS', 3 );

// Autosave every 180 seconds
define( 'AUTOSAVE_INTERVAL', 180 );

// Empty the trash after 7 days
define( 'EMPTY_TRASH_DAYS', 7 );

// Remove the theme and plugin file editor from wp-admin
define( 'DISALLOW_FILE_EDIT', true );

// Force HTTPS for logins and wp-admin
define( 'FORCE_SSL_ADMIN', true );

// Set the site addresses here
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

คัดลอกเฉพาะบรรทัดที่ต้องการ บางรายการมีรายละเอียดที่ควรรู้:

  • หน่วยความจำ: ค่าเริ่มต้นของ WordPress คือ 40M หรือ 64M บน multisite และ 256M สำหรับ wp-admin เว้นแต่ PHP จะอนุญาตมากกว่านั้นอยู่แล้ว หากโฮสติ้งไม่อนุญาตให้เปลี่ยนขีดจำกัด WordPress จะใช้ขีดจำกัดที่ PHP มีอยู่ คู่มือหน่วยความจำไม่พอ อธิบายว่าควรทำอย่างไรเมื่อเจอกรณีนี้
  • รีวิชัน: เปิดอยู่โดยค่าเริ่มต้น ตั้ง false เพื่อปิด หรือใส่ตัวเลขเพื่อจำกัดจำนวน
  • การบันทึกอัตโนมัติและถังขยะ: ค่าเริ่มต้นคือ 60 วินาทีและ 30 วัน การตั้ง EMPTY_TRASH_DAYS เป็น 0 จะปิดถังขยะ และเอกสารเตือนว่า WordPress จะไม่ถามยืนยันเมื่อมีคนคลิก “Delete Permanently” (ลบถาวร)
  • ตัวแก้ไขไฟล์: คู่มือเสริมความปลอดภัย บอกว่าวิธีนี้ไม่ได้หยุดผู้โจมตีจากการอัปโหลดไฟล์อันตราย แม้อาจหยุดการโจมตีบางแบบได้ DISALLOW_FILE_MODS ไปไกลกว่านั้น โดยบล็อกการติดตั้งและอัปเดตปลั๊กอินและธีมด้วย
  • HTTPS: เมื่อการตั้งค่า “ที่อยู่ WordPress” ขึ้นต้นด้วย https อยู่แล้ว WordPress จะตั้ง FORCE_SSL_ADMIN เป็น true เอง บรรทัดนี้จะเปลี่ยนแปลงอะไรก็ต่อเมื่อที่อยู่ไม่ได้ขึ้นต้นด้วย https
  • ที่อยู่ไซต์: ค่าเหล่านี้ใช้แทนค่าที่บันทึกไว้โดยไม่เปลี่ยนสิ่งที่เก็บในฐานข้อมูล ต้องใส่ส่วน https:// ด้วย

มีการตั้งค่าหนึ่งที่ต้องวางแผนมากกว่า define( 'DISABLE_WP_CRON', true ); ทำให้การเข้าชมหน้าเว็บไม่เริ่มงานตามกำหนดเวลา ดังนั้นให้ตั้ง cron job บนเซิร์ฟเวอร์สำหรับ wp-cron.php ก่อนเปิดใช้ ไม่เช่นนั้นโพสต์ที่ตั้งเวลาและงานตามเวลาอื่นๆ จะไม่ทำงาน

วิธีแก้ไข wp-config.php อย่างปลอดภัย

  1. ดาวน์โหลดสำเนาก่อน เก็บไว้ในคอมพิวเตอร์ของคุณเอง สำเนาที่ทิ้งไว้บนเซิร์ฟเวอร์ในชื่ออย่าง wp-config.php.bak อาจเปิดอ่านได้ในเบราว์เซอร์ เพราะเซิร์ฟเวอร์ไม่ถือว่าเป็น PHP อีกต่อไป
  2. เปิดไฟล์ในโปรแกรมแก้ไขข้อความธรรมดา คู่มือการแก้ไขไฟล์ของ WordPress ระบุว่า Notepad++, Sublime Text และ Visual Studio Code ใช้ได้ และเตือนไม่ให้ใช้ Google Docs และ Microsoft Word เพราะโปรแกรมประมวลผลคำจะเปลี่ยนเครื่องหมายคำพูดและอาจเพิ่มโค้ดที่ทำให้ไฟล์เสีย
  3. หาบรรทัด “stop editing” แล้ววางบรรทัดใหม่ไว้เหนือบรรทัดนั้นทันที หากการตั้งค่านั้นถูกกำหนดไว้ด้านบนแล้ว ให้เปลี่ยนที่บรรทัดนั้น
  4. บันทึกและอัปโหลด แล้วเปิดไซต์ ในหน้าต่างส่วนตัวของเบราว์เซอร์ พร้อมกับหนึ่งหน้าใน wp-admin
  5. ถ้ามีอะไรพัง ให้นำสำเนากลับมาใช้ วิธีนี้ย้อนการแก้ไขได้แม้ wp-admin จะโหลดไม่ขึ้น

ย้ายไฟล์ไปไว้เหนือเว็บรูท

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

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

คู่มือเดียวกันบอกว่าบางคนมองว่าการย้ายนี้ให้ประโยชน์ด้านความปลอดภัยน้อยมาก และอาจสร้างช่องโหว่ร้ายแรงหากทำโดยไม่ระวัง จึงควรถือเป็นทางเลือก บน Apache คู่มือยังให้บล็อกนี้สำหรับวางที่ด้านบนของไฟล์ .htaccess ซึ่งปฏิเสธคำขอโดยตรงที่เข้ามายังไฟล์:

<Files "wp-config.php">
Require all denied
</Files>

คู่มือความปลอดภัย .htaccess ของเราอธิบายกฎนี้พร้อมกับกฎอื่นๆ

สิทธิ์ไฟล์ของ wp-config.php

เอกสารของ WordPress ให้ตัวเลขต่างกันเล็กน้อยตามสถานการณ์:

  • คู่มือเสริมความปลอดภัย บอกว่าควรมีแค่คุณและเว็บเซิร์ฟเวอร์ที่อ่านไฟล์ได้ ซึ่งคู่มือระบุว่าโดยทั่วไปหมายถึง 400 หรือ 440
  • คู่มือสิทธิ์ไฟล์ ระบุ 440 หรือ 400 บนแชร์โฮสติ้งที่ใช้ suexec เพื่อกันไม่ให้ผู้ใช้อื่นบนเซิร์ฟเวอร์อ่านไฟล์ได้ และยังแสดง 600 เป็นตัวอย่างที่ปลอดภัย
  • สำหรับไฟล์ WordPress ทั่วไป คู่มือนั้นระบุ 644 หรือ 640

ตัวเลขที่ใช้ได้ขึ้นอยู่กับผู้ใช้ระบบที่เว็บเซิร์ฟเวอร์ทำงานอยู่ เว็บเซิร์ฟเวอร์ต้องอ่านไฟล์ได้ ดังนั้นหากไซต์โหลดไม่ขึ้นหลังการเปลี่ยน ให้กลับไปใช้ค่าเดิม แล้วถามผู้ให้บริการโฮสติ้งว่าค่าใดเหมาะกับระบบของเขา

ข้อผิดพลาดที่พบบ่อย

  • วางการตั้งค่าหลังบรรทัด wp-settings.php บรรทัดนั้นจะโหลด WordPress และกำหนดค่าเริ่มต้น ค่าคงที่ของ PHP เปลี่ยนไม่ได้ ระหว่างที่สคริปต์ทำงาน บรรทัดของคุณจึงไม่มีผล
  • กำหนดการตั้งค่าเดียวกันสองครั้ง บรรทัดแรกกำหนดค่า และบรรทัดที่สองเปลี่ยนค่านั้นไม่ได้ คู่มือ PHP ระบุว่าการประกาศค่าคงที่ซ้ำถูกเลิกแนะนำ (deprecated) ตั้งแต่ PHP 8.5 จึงอาจมีข้อความแจ้งเตือนด้วย ค้นหาชื่อในไฟล์ก่อนเพิ่ม
  • ใส่เครื่องหมายคำพูดครอบ true หรือ false 'false' เป็นสตริงที่ไม่ว่าง และ PHP ถือว่าเป็น true ให้เขียน false โดยไม่มีเครื่องหมายคำพูด ส่วนขนาดอย่าง '256M' ต้องมี
  • เครื่องหมายคำพูดแบบโค้งจากโปรแกรมประมวลผลคำหรือหน้าเว็บ PHP ต้องใช้เครื่องหมายคำพูดแบบตรง แบบโค้งจึงทำให้เกิดข้อผิดพลาดที่หยุดการโหลดไซต์
  • แสดงข้อผิดพลาดดีบักบนไซต์ที่ใช้งานจริง WP_DEBUG_DISPLAY มีค่าเริ่มต้นเป็น true หากเปิดเฉพาะ WP_DEBUG ข้อผิดพลาดจะแสดงบนหน้าเว็บให้ผู้เข้าชมเห็น คู่มือตำแหน่งไฟล์บันทึกดีบัก แสดงวิธีส่งข้อผิดพลาดไปยังไฟล์
  • เปิด WP_ALLOW_REPAIR ทิ้งไว้ เอกสารบอกให้เปิดเฉพาะเมื่อจำเป็น และปิดเมื่อแก้ปัญหาเสร็จแล้ว

คำถามที่พบบ่อย

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

ไฟล์ wp-config.php อยู่ที่ไหน? โดยปกติอยู่ที่รูทของการติดตั้ง WordPress ซึ่งเป็นโฟลเดอร์ที่มี wp-admin, wp-includes และ wp-content อยู่ด้วย WordPress ยังยอมรับไฟล์ที่อยู่เหนือโฟลเดอร์ติดตั้งหนึ่งชั้น ตราบใดที่โฟลเดอร์นั้นไม่มี wp-settings.php

ควรเพิ่มโค้ดตรงไหนใน wp-config.php? เหนือบรรทัด That’s all, stop editing! Happy publishing ไฟล์รุ่นเก่าจะเขียนว่า Happy blogging บรรทัดสุดท้ายด้านล่างจะโหลด WordPress การตั้งค่าที่วางไว้หลังบรรทัดนั้นจึงมาช้าเกินไป

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

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

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

แหล่งข้อมูล


สร้างการตั้งค่าที่คุณต้องการโดยไม่ต้องพิมพ์เอง พร้อมคีย์ความปลอดภัยชุดใหม่ ด้วยเครื่องมือสร้าง wp-config.php ฟรี

FAQ

คำถาม

wp-config.php ใน WordPress คืออะไร?

คือไฟล์การตั้งค่าที่ WordPress โหลดตอนเริ่มทำงาน ไฟล์นี้เก็บข้อมูลเข้าฐานข้อมูล คีย์ความปลอดภัย และคำนำหน้าตาราง และเป็นที่สำหรับเพิ่มการตั้งค่าอย่าง WP_DEBUG หรือ WP_MEMORY_LIMIT

ไฟล์ wp-config.php อยู่ที่ไหน?

โดยปกติอยู่ที่รูทของการติดตั้ง WordPress ซึ่งเป็นโฟลเดอร์ที่มี wp-admin, wp-includes และ wp-content อยู่ด้วย WordPress ยังยอมรับไฟล์ที่อยู่เหนือโฟลเดอร์ติดตั้งหนึ่งชั้น ตราบใดที่โฟลเดอร์นั้นไม่มี wp-settings.php

ควรเพิ่มโค้ดตรงไหนใน wp-config.php?

เหนือบรรทัด That's all, stop editing! Happy publishing ไฟล์รุ่นเก่าจะเขียนว่า Happy blogging บรรทัดสุดท้ายด้านล่างจะโหลด WordPress การตั้งค่าที่วางไว้หลังบรรทัดนั้นจึงมาช้าเกินไป

แก้ไข wp-config.php ปลอดภัยหรือไม่?

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

ถ้าลบ wp-config.php จะเกิดอะไรขึ้น?

WordPress จะหาข้อมูลเข้าฐานข้อมูลไม่เจอ และเริ่มขั้นตอนการติดตั้งพร้อมแจ้งให้สร้างไฟล์การตั้งค่า เนื้อหาของคุณยังอยู่ในฐานข้อมูล การกู้คืนไฟล์สำรองหรือสร้างไฟล์ใหม่ด้วยข้อมูลเดิมจึงเชื่อมต่อไซต์กลับมาได้

wp-config.php ควรมีสิทธิ์ไฟล์เท่าไร?

คู่มือเสริมความปลอดภัยของ WordPress บอกว่าควรมีแค่คุณและเว็บเซิร์ฟเวอร์ที่อ่านไฟล์ได้ ซึ่งโดยทั่วไปหมายถึง 400 หรือ 440 คู่มือสิทธิ์ไฟล์ยังแสดง 600 ด้วย เว็บเซิร์ฟเวอร์ยังต้องอ่านไฟล์ได้ ดังนั้นหากไซต์โหลดไม่ขึ้น ให้สอบถามผู้ให้บริการโฮสติ้ง