Lưu ý bài viết này chỉ dành cho các bạn đã biết về XAMPP nhé (hoặc những phần mềm cùng tính năng như Appserv, WAMP,…), còn bạn nào chưa biết thì xem Wikipedia cho biết…
“Tại sao XAMPP không khởi động được?”
Làm lập trình web thì hẳn ai cũng phải gặp cái tình huống khó chịu này: XAMPP không khởi động được.
Rõ ràng bạn đang sử dụng XAMPP rất ư là bình thường, máy chạy chậm quá, thôi thì cài lại win đi… Cài xong hí hửng chạy XAMPP và…
Hình trên là thông báo Apache khởi động thất bại, nội dung thông báo cũng rất là chung chung: “Apache bị tắt bất ngờ, chắc là port nào đó bị chặn, bị chiếm, bị thiếu quyền truy cập, bị tạch hay cũng có thể bị thằng khác rút dây điện…”
Bạn điên cuồng bấm nút Start nhưng càng bấm nó càng đỏ lòm Bạn bắt đầu chú ý đến nội dung thông báo, đặc biệt là đoạn “port bị chặn” (vì chỉ có mình nó là dễ hiểu nhất), liền lên google sục sạo tìm kiếm các thể loại như “làm sao biết port nào bị chặn”, “làm sao biết chương trình nào đang sử dụng port xx”,… và down về một mớ phần mềm kiểm tra theo dõi lung tung beng!
Kết quả là không có kết quả nào.
Cuối cùng, với kinh nghiệm nhiều lần ăn hành vì XAMPP, cũng như la liếm khắp nơi trên google để tìm câu trả lời (bao gồm cả cái quá trình quằn quại ở trên), mình đã (tự) phát hiện và đúc kết ra được một số trường hợp dẫn đến lỗi này (kỳ công lắm chứ ko đơn giản đâu nha ).
1. Skype
Đây là trường hợp thường gặp nhất. Apache mặc định hoạt động trên port 80 (hoạt động thế nào thì mình ko rõ vì hồi đó ăn hên được 8 điểm môn Mạng Máy Tính ), và Skype cũng vậy. Mà thằng Skype thì lại mặc định khởi động trước nên nghiễm nhiên nó chiếm cổng 80 trước luôn (đoán vậy). XAMPP tới sau nên chỉ có thể ngậm ngùi hít khói mà thôi.
Có 2 cách giải quyết, đó là đổi port của XAMPP hoặc đổi port của Skype. Nghe nói 80 là port “truyền thống” của web cho nên mình sẽ tôn trọng truyền thống, bẻ thằng trai tân Skype đi hướng khác.
Khởi động Skype, vào menu Tools > Options hoặc tổ hợp phím Ctrl + , (dấu phẩy) để mở giao diện cài đặt của Skype.
Chọn tab Advanced > Connection, bỏ check dòng “Use port 80 and 443 for additional incoming connections”.
Bấm Save và khởi động lại Skype là xong.
2. Microsoft SQL Server
Đối với các bạn lập trình C++, C#, VB.NET, ASP.NET,… thì thường có cài thêm MS SQL Server để lưu trữ dữ liệu, và bản thân thằng này cũng là một trong những nguyên nhân bóp cổ không cho XAMPP khởi động.
Mở giao diện SQL Server Configuration Manager (vào START gõ chữ “sql” là thấy – Windows 7, 8. Còn Windows XP thì chịu khó kiếm trong START > Program Files), chọn mục SQL Server Services bên trái, danh sách các mục con hiện ra bên phải, chọn stop dòng “SQL Server Reporting Services”.
Để chắc ăn thì nên vào properties ngăn nó chạy lúc khởi động máy luôn. Việc này có ảnh hưởng gì tới SQL Server ko thì mình ko dám chắc, vì tốt nghiệp xong là hết muốn nhìn mấy món của các Bill rồi.
3. Internet Information Services (IIS)
IIS là chương trình tạo webserver của Microsoft, chức năng giống như XAMPP, nhưng hỗ trợ chủ yếu cho những đứa con của các Bill (ASP, ASP.NET,…), muốn chạy PHP cũng được nhưng phải cấu hình thêm chút… nói chung là mang tính chất ăn ké cho nên mình ko hảo lắm, tội gì ăn ké khi mà XAMPP ra đời để nuôi PHP trên Windows.
Do lúc đi học có môn lập trình web bằng ASP.NET cho nên mình có cài IIS để làm webserver. Và vì nó mang tính chất đồng loại với XAMPP nên nó cũng chiếm luôn cái port 80, làm XAMPP lại ngậm ngùi hít khói như ngày gặp gỡ Skype. :-<
Mở giao diện cấu hình IIS lên (vào START gõ “iis” là thấy, nếu không thấy thì mò như trong Windows XP nói trên), stop dịch vụ của IIS đi, chặn nó khởi động cùng windows cũng được, chừng nào cần xài thì hãy mở lên.
4. VMWare Workstation
@Cảm ơn comment của bạn Fabien Zet
Nếu bạn đang sử dụng chương trình tạo máy ảo VMWare Workstation thì cũng có thể gặp vấn đề khởi động XAMPP, do VMWare đã sử dụng port 80 và 443 vào việc chia sẻ dữ liệu giữa máy thật và máy ảo, nên XAMPP nghiễm nhiên trở thành “trâu chậm uống nước đục”. Cách khắc phục: (tham khảo superuser.com)
Mở VMWare, vào menu Edit → Preferences → Shared VMs → click DISABLE SHARING
5. Còn gì nữa không?
Trên đây là 3(+1) trường hợp mình đã gặp khi sử dụng XAMPP. Có lần dùng WAMP cũng bị tương tự, giải quyết y chang, bởi vì nó đều xoay quanh port 80 thôi. Còn bạn nào gặp trường hợp khác, comment dưới đây để mình bổ sung thêm nhé Dạo các group PHP trên Facebook, trung bình 3 ngày là có 1 người hỏi về cái vụ này, tức cảnh sinh tình viết luôn một bài dài dòng để dành mốt quăng link qua cho lẹ đỡ mất công gõ comment.