หากคุณกำลังรัน XAMPP หรือ WAMP หรือเว็บเซิร์ฟเวอร์อื่นๆ บนคอมพิวเตอร์โลคัลของคุณ และคุณเผชิญกับข้อความข้อผิดพลาด "Localhost refused to connect" (Localhost ปฏิเสธการเชื่อมต่อ) แล้ว มีความเป็นไปได้สูงที่จะมีบางอย่างผิดปกติกับการกำหนดค่าของคุณ สิ่งนี้ยังรวมถึงสถานการณ์ที่ localhost ของคุณไม่สอดคล้องกับ 127.0.0.1 อย่างถูกต้อง หรือเมื่อคุณมีสิทธิ์ไม่เพียงพอในการเข้าถึงไฟล์ Localhost หรือ 127.0.0.1 คือที่อยู่ IP ของเว็บเซิร์ฟเวอร์ที่ทำงานบนคอมพิวเตอร์ของคุณ ไม่ใช่บนเว็บ และคุณสามารถเข้าถึงได้แม้คุณจะไม่มีการเชื่อมต่ออินเทอร์เน็ต

Localhost ตรงกับเว็บเซิร์ฟเวอร์ใดๆ ที่ทำงานบนคอมพิวเตอร์ที่คุณพยายามเข้าถึงจาก การทดสอบแอป การเปลี่ยนแปลงแอปปัจจุบัน และการทำงานพัฒนาอื่นๆ บนคอมพิวเตอร์โลคัลของคุณดีกว่าการทำบนเซิร์ฟเวอร์ออนไลน์หรือ production server เพราะอย่างนั้น คุณสามารถทดสอบบั๊กและกำจัดมันได้โดยไม่ต้องทำให้แอปพลิเคชันที่ทำงานอยู่บนเว็บเซิร์ฟเวอร์ออนไลน์หรือในสภาพแวดล้อม production เสียหาย คุณจะสามารถทดสอบแอปพลิเคชันเพื่อให้แน่ใจว่ามันทำงานถูกต้องและจะไม่ก่อให้เกิด downtime (เวลาหยุดทำงาน) หรือปัญหาอื่นๆ เมื่อมันทำงานจริงในสภาพแวดล้อม production มีกรณีบางกรณีที่คุณต้องการพัฒนาแอปพลิเคชันในเอดิเตอร์อย่าง Microsoft's Visual Studio / Visual Studio Code ซึ่งคุณสามารถใช้พัฒนาแอป Android และคุณเผชิญกับข้อผิดพลาดนี้เมื่อคุณต้องการเชื่อมต่อโปรเจกต์ของคุณกับเว็บเซิร์ฟเวอร์ที่ทำงานบนเครื่องของคุณ หรือแพ็กเกจเว็บเซิร์ฟเวอร์ที่ให้โดยเอดิเตอร์เอง
มีเหตุผลมากมายที่ทำให้ข้อผิดพลาดนี้เกิดขึ้น และสาเหตุที่แน่นอนของข้อผิดพลาดนี้ขึ้นอยู่กับรากฐานที่ก่อให้เกิดมัน ดังนั้น ก่อนที่เราจะเริ่มแสดงวิธีแก้ไขปัญหานี้ เรามาทำความเข้าใจสาเหตุที่เป็นไปได้ของข้อผิดพลาดเพื่อสร้างความเข้าใจที่ดีกว่าก่อน
- Localhost ไม่สอดคล้องกับ 127.0.0.1 — อาจมีกรณีที่ localhost บนเครื่องของคุณไม่ได้สอดคล้องกับ 127.0.0.1 อย่างถูกต้อง หากนั่นคือเหตุผล คุณจะไม่สามารถเข้าถึงเว็บเซิร์ฟเวอร์โลคัลของคุณได้โดยการพิมพ์ localhost ในเบราว์เซอร์เว็บ หรือโดยการ ping localhost จาก command prompt
- ใช้ WSL บน Windows เพื่อรันเว็บเซิร์ฟเวอร์ — บางครั้ง LxssManager Service บน Windows เป็นผู้ก่อให้เกิดปัญหา หากคุณกำลังรันเว็บเซิร์ฟเวอร์ภายในการกระจายลินุกซ์บน Windows subsystem for linux
- พอร์ต 80 ถูกใช้โดยแอปพลิเคชันอื่นบนคอมพิวเตอร์ของคุณ — ในบางกรณี ข้อผิดพลาดนี้อาจเกิดขึ้น หากพอร์ต 80 บนคอมพิวเตอร์ของคุณถูกใช้โดยแอปพลิเคชันอื่นบนคอมพิวเตอร์ของคุณ Skype เคยใช้พอร์ต 80 ในอดีต และคุณจะไม่สามารถรัน Apache server บน WAMP หรือ XAMPP พร้อมกับการรัน Skype บนคอมพิวเตอร์ Windows ของคุณได้
- เข้าถึงเว็บเซิร์ฟเวอร์ของคุณจากพอร์ตที่ผิด — อาจเป็นไปได้ว่าเว็บเซิร์ฟเวอร์ของคุณถูกกำหนดค่าให้ใช้พอร์ตอื่นแทนพอร์ตเริ่มต้น 80 และคุณกำลังพยายามเข้าถึงมันโดยการพิมพ์ localhost ในเบราว์เซอร์ของคุณซึ่งค่าเริ่มต้นคือ localhost:80 คือ พอร์ต 80 หากเป็นเช่นนั้น คุณจะได้รับข้อความข้อผิดพลาดนี้
- สิทธิ์ไม่เพียงพอ — ในบางสถานการณ์ ข้อผิดพลาดนี้อาจเกิดขึ้น หากคุณพยายามเข้าถึงไฟล์หรือไดเรกทอรีในเว็บเซิร์ฟเวอร์โลคัลซึ่งไม่ได้รับอนุญาตให้เข้าถึงโดยผู้ใช้ของคุณ
ตอนนี้เราได้บอกคุณแล้วเกี่ยวกับเหตุผลบางอย่างที่ทำให้ข้อผิดพลาดนี้เกิดขึ้นบนคอมพิวเตอร์ Windows ตอนนี้ เรามาดูว่าคุณสามารถทำอะไรได้เพื่อแก้ไขหรือกำจัดข้อผิดพลาดนี้และดำเนินการพัฒนาเว็บของคุณต่อไป
เปลี่ยนพอร์ตของ Apache Web Server ใน XAMPP หรือ WAMP
ขั้นแรก วิธีที่พบบ่อยที่สุดในการแก้ไขข้อผิดพลาดนี้คือการเปลี่ยนพอร์ตของ Apache web server หากคุณใช้ XAMPP หรือ WAMP บน Windows ปกติแล้ว แอปพลิเคชันเว็บอื่นบางอย่างที่คุณอาจรันบนคอมพิวเตอร์ของคุณสามารถครอบครองพอร์ต 80 และมันถูกบล็อก/เข้าถึงไม่ได้โดยแอปพลิเคชันอย่าง Apache ดังนั้น แม้ Apache จะกำลังทำงาน มันก็จะไม่สามารถดึงหน้าเว็บบนพอร์ตเฉพาะนั้นได้
เปลี่ยนพอร์ตของ Apache ใน XAMPP
เพื่อเปลี่ยนพอร์ตการทำงานของ Apache web server ใน XAMPP ให้ทำดังนี้:
- ขั้นแรก เริ่ม XAMPP จาก Start Menu (เมนูเริ่ม)
- จากนั้น ในส่วน system tray ของแถบงานของคุณ คุณจะเห็นไอคอน XAMPP คลิกสองครั้งที่มัน
- คุณจะเห็นหน้าต่าง Control Panel (แผงควบคุม) ของ XAMPP ในหน้าต่างนั้น คุณจะเห็นรายการบริการที่กำลังทำงานอยู่ เช่น apache, mysql ฯลฯ
- ถัดจากชื่อบริการ จะมีปุ่มที่เรียกว่า "Stop" (หยุด) คลิกที่ Stop หน้าของบริการ apache

- ต่อไป เปิด Windows Explorer และไปที่ C:\xampp\apache\conf ไดเรกทอรี่ ที่นั่น ค้นหาไฟล์ชื่อ httpd.conf

- เปิดมันด้วย Notepad หรือเอดิเตอร์อื่นที่คุณต้องการ ภายในไฟล์ ค้นหาสองบรรทัดนี้
Listen 80 ServerName localhost:80

- เมื่อคุณพบแล้ว ให้แทนที่ด้วยสิ่งต่อไปนี้:
Listen 8080 ServerName localhost:8080
- ตอนนี้ บันทึกไฟล์ มันจะขอสิทธิ์ผู้ดูแลระบบเมื่อคุณบันทึกไฟล์ คลิก Yes เมื่อกล่องโต้ตอบปรากฏ
- ตอนนี้เปิด XAMPP control panel อีกครั้ง และเริ่ม Apache web server
- หากข้อผิดพลาดเกิดจากการขัดแย้งของหมายเลขพอร์ต การทำเช่นนี้จะแก้ไขมัน
เปลี่ยนหมายเลขพอร์ตของ Apache Web Server ใน WAMP
เพื่อเปลี่ยนหมายเลขพอร์ตของ Apache web server ใน wamp ขั้นแรกคุณต้องปิด WAMP
- เพื่อทำเช่นนั้น ให้เปิด Task Manager โดยการคลิกขวาที่แถบงานของคุณและเลือก Task Manager จากเมนูที่ปรากฏ

- เมื่อ Task Manager เปิดแล้ว ดูว่ามีอินสแตนซ์ของ WAMP กำลังทำงานอยู่หรือไม่ หากมี ให้คลิกที่ปุ่ม End Task (จบงาน) ที่ดีเก่าๆ เพื่อหยุดพวกเขา
- ตอนนี้ เปิด Windows Explorer โดยการดับเบิลคลิกไอคอน My Computer บนเดสก์ท็อปของคุณ นำทางไปที่โฟลเดอร์ C:\wamp\Apache2\conf และเปิดไฟล์ชื่อ httpd.conf ด้วย notepad หรือเอดิเตอร์อื่นที่คุณเลือก
- หลังจากนั้น ค้นหาสองบรรทัดนี้ในไฟล์นั้น:
Listen 80 ServerName localhost:80

- หลังจากค้นหาบรรทัดเหล่านี้แล้ว ให้แทนที่ด้วยสิ่งต่อไปนี้แทน:
Listen 8080 ServerName localhost:8080
- แค่นั้นแหละ บันทึกไฟล์ และเปิด WAMP อีกครั้ง และดูว่าคุณยังเผชิญกับข้อผิดพลาดนี้หรือไม่
เข้าถึง Localhost โดยใช้ 127.0.0.1
ซซึ่งเราได้กล่าวไว้ก่อนหน้านี้ หนึ่งในเหตุผลที่ข้อความข้อผิดพลาดคำถามอาจปรากฏคือ ในบางกรณี localhost ไม่ได้สอดคล้องกับ 127.0.0.1 ซึ่งเป็นที่อยู่ของเว็บเซิร์ฟเวอร์โลคัลของคุณ
เพื่อแก้ไขปัญหานั้น ให้เริ่มเว็บเซิร์ฟเวอร์โดยการเปิด XAMPP หรือ WAMP และไปที่เบราว์เซอร์ของคุณและพิมพ์ 127.0.0.1 และกด Enter หากคุณสามารถเข้าถึงเว็บเซิร์ฟเวอร์ได้โดยใช้วิธีนี้ แสดงว่า localhost ไม่ได้ชี้ไปที่ IP นี้ และคุณจะต้องเข้าถึงโปรเจกต์/ไฟล์ใดๆ บนเว็บเซิร์ฟเวอร์ของคุณโดยการพิมพ์ 127.0.0.1/filename แทนที่จะเป็น localhost/filename
รีสตาร์ท LXSSManager Service (สำหรับเว็บเซิร์ฟเวอร์ที่รันบน WSL)
หากคุณใช้ Windows Subsystem for Linux บนคอมพิวเตอร์ของคุณเพื่อรันเว็บเซิร์ฟเวอร์ ซึ่งบางคนอาจทำเพื่อพัฒนาแอปพลิเคชัน Nodejs ฯลฯ ขณะเผชิญกับข้อผิดพลาดนี้ สิ่งที่ง่ายที่สุดที่คุณสามารถทำได้คือรีสตาร์ท LXSSManager service ในการทำเช่นนี้ ทำตามคำแนะนำที่ให้มาด้านล่าง:
- ขั้นแรก เปิดกล่องโต้ตอบ Run โดยการกดลัด Windows key + R บนแป้นพิมพ์ของคุณ
- เมื่อกล่องโต้ตอบ Run เปิดขึ้น พิมพ์ services.msc และกด Enter

- สิ่งนี้จะเปิดแอป Windows Services ซึ่งคุณจะเห็นรายการบริการทั้งหมดที่มีอยู่บนคอมพิวเตอร์ของคุณ
- ในหน้าต่าง Services ให้ค้นหาบริการที่ชื่อ LxssManager
- คลิกขวาที่มันและเลือก Restart (รีสตาร์ท) จากเมนูแบบดรอปดาวน์ ทางเลือกอื่น คุณสามารถดับเบิลคลิกที่มันเพื่อเปิดหน้าต่าง Properties (คุณสมบัติ) แล้วหยุดมัน สุดท้าย คลิก Start อีกครั้งเพื่อทำให้การรีสตาร์ทเสร็จสมบูรณ์

- เมื่อเสร็จแล้ว ดูเว็บเซิร์ฟเวอร์อีกครั้ง น่าจะทำงานได้แล้วหากมันเกิดจากปัญหากับ LxssManager service
เข้าถึง Localhost ด้วยหมายเลขพอร์ต
ซซึ่งเป็นไปได้ว่า โซลูชันอีกอย่างสำหรับข้อความข้อผิดพลาดคำถามคือ หากเว็บเซิร์ฟเวอร์ของคุณไม่ได้รันบนพอร์ตเริ่มต้น 80 คุณสามารถเข้าถึงเว็บเซิร์ฟเวอร์โลคัลได้โดยการระบุหมายเลขพอร์ตด้วย ปกติแล้ว หมายเลขพอร์ตจะเป็น 80 หรือ 8080
เพื่อทำเช่นนั้น คุณต้องพิมพ์ localhost:8080 ในเบราว์เซอร์ของคุณ โปรดทราบว่าคุณไม่ต้องพิมพ์ localhost:80 เนื่องจาก 80 เป็นพอร์ตเริ่มต้นที่เบราว์เซอร์เว็บของคุณใช้ทุกครั้งที่เข้าถึงเว็บไซต์หรือเว็บเซิร์ฟเวอร์ใดๆ ไม่ว่าจะเป็นออนไลน์หรือออฟไลน์
ลบไฟล์ Config ของแอปพลิเคชัน (หากเกี่ยวข้อง)
หากคุณใช้ Visual Studio และทำการเขียนโปรแกรม asp.net บางอย่าง และคุณเผชิญกับข้อผิดพลาดนี้ อย่ากังวล เรามีวิธีแก้ไขสำหรับคุณ สิ่งที่คุณต้องทำคือลบไฟล์ application.config ที่อยู่ภายในโฟลเดอร์ที่ชื่อ .vs ในบางกรณี โฟลเดอร์นี้อาจถูกซ่อนอยู่ ดังนั้น ตรวจสอบให้แน่ใจว่าคุณสามารถเห็นไฟล์และโฟลเดอร์ที่ซ่อนอยู่ในหน้าต่าง Windows Explorer ของคุณ ทำตามคำแนะนำที่ให้มาด้านล่างเพื่อทำสิ่งนี้:
- ขั้นแรก เปิดโฟลเดอร์โปรเจกต์ของคุณ และจากนั้นเปิดโฟลเดอร์ .vs หากคุณไม่สามารถเห็นโฟลเดอร์นี้ได้ นั่นเป็นเพราะมันถูกซ่อน คุณจะต้องแก้ไขตัวเลือกโฟลเดอร์ในหน้าต่าง Windows Explorer เพื่อให้สามารถเห็นไฟล์และโฟลเดอร์ที่ซ่อนอยู่ได้

- เมื่ออยู่ภายในโฟลเดอร์ .vs ให้เปิดโฟลเดอร์ config
- ภายในโฟลเดอร์ config ให้ลบไฟล์ application.config
- แค่นั้นแหละ หากคุณใช้ IISExpress และทำโปรเจกต์ asp.net บางอย่าง สิ่งนี้จะแก้ปัญหาของ Visual Studio ที่ไม่สามารถเชื่อมต่อกับ localhost ได้