Saturday, August 20, 2016

Troubleshooting the most likely XAMPP’s issue “Apache is not Running”









XAMPP မွာ အမ်ားအားျဖင့္ ျဖစ္တက္တဲ့ ျပႆနာတစ္ခုျဖစ္ေသာ Apache is not running. ကိုဘယ္လိုေျဖရွင္းမလဲ… (ဒီျပသနာကို ေမးတက္ၾကလို႔ ပို႔စ္တစ္ခုအေနနဲ႔တင္ျပလိုက္ပါတယ္။)

ဒါကိုမေျပာခင္မွာ XAMPP ဟာ ဘာလဲဆိုတာ အရင္ေျပာရပါမယ္။ ေရွ႕ပိုင္း PHP သင္ခန္းစာ အစမွာတုန္းကလဲ ေျပာခဲ့ဖူးပါတယ္။ အခုလည္း နည္းနည္းျပန္ေျပာပါမယ္။ XAMPP ဟာ ေက်ာ္ၾကားလွတဲ့ Web development tool တစ္ခုျဖစ္ပါတယ္။ Apache server, Mysql database နဲ႔ တျခားလိုအပ္တဲ့ FTP services တခ်ိဳ႕ ေပါင္းစပ္ထာတဲ့ All in one software တစ္ခုလဲျဖစ္ပါတယ္။ XAMPP ဆိုတဲ့အမည္နဲ႔ပတ္သက္ၿပီးရွင္းရမယ္ဆိုရင္ A ဟာ Apache ၊ M က MySql ၊ ပထမ P က PHPနဲ႔ ဒုတိယ P ကေတာ့ Perl ကို အသီးသီးကိုယ္စားျပဳပါတယ္။ ဒီေနရာမွာ ေရွ႕ဆုံးက X သည္ Cross-platform ျဖစ္တယ္ဆိုတာထင္ရွားေစခ်င္လို႔ျဖစ္ပါတယ္။ ဆိုလိုတာက ယခု all in one package သည္ Operating System(OS) အမ်ိဳးအစားတစ္မ်ိဳးတည္းအတြက္မဟုတ္ဘူး၊ Windows အတြက္ XAMPP versions ေတြရွိတယ္၊ Linux အတြက္ သုံးရမယ့္ Versions ေတြရွိတယ္ စသည္ျဖင့္ေပါ့ အျခား OS ေတြအတြက္လဲ အသီးသီးရွိၾကပါတယ္။ ဒါကို ဆိုလိုတာျဖစ္ပါတယ္ ေရွ႕ဆုံးက X ဟာ။ ဒီ installer ကို install လုပ္လိုက္ျခင္းအားျဖင့္ သူကေန လိုအပ္တာေတြ အလိုေလ်ာက္ထည့္သြင္း preconfigured လုပ္ၿပီး အဆင္သင့္သုံးနိုင္တဲ့ အေနအထားကိုရဖို႔ အကူအညီေပးမွာျဖစ္ပါတယ္။ ဒီ idea ေလးက ကၽြန္ေတာ္တို႔အတြက္ ေတာ္ေတာ္ေလး အဆင္ေျပေစပါတယ္။ Install လုပ္ၿပီးတဲ့ေနာက္မွာေတာ့ Services ေတြကို အဖြင့္အပိတ္လုပ္နိုင္တဲ့ Button ေလးေတြပါတဲ့ Control Panel တစ္ခုကိုရလာမွာျဖစ္ပါတယ္။ Installation လုပ္ၿပီးတဲ့ ေနာက္ ပထမဆုံး လုပ္ရမွာက install လုပ္ထားတဲ့ program ကို ဖြင့္ပါ XAMPP control panel ဆိုၿပီး Desktop ေပၚမွာ ရွိပါလိမ့္မယ္။ ဖြင့္လိုက္ရင္ ပုံ-၁ အတိုင္းေတြ႕ရပါမယ္။

ဒီအေျခအေနကေနစၿပီး အလုပ္လုပ္ဖို႔ Apache server ကို start လုပ္လိုက္တဲ့အခ်ိန္ တစ္ခါတစ္ေလမွာ အေၾကာင္းအမ်ိဳးမ်ိဳးေၾကာင့္ Server မ Run နိုင္ဘဲျဖစ္ေနတာေတြကို ၾကဳံရတက္ပါတယ္။ ပံု-၂ မွာျပထားသလို Error ေတြျပေနပါလိမ့္မယ္။ ဒီထဲကအတိုင္း အျမဲတမ္းျပေနမယ္လို႔ ဆိုလိုတာ မဟုတ္ပါဘူး တျခားစာသားေတြလဲ ျဖစ္နိုင္ပါေသးတယ္ (အနီနဲ႔ျပေနတဲ့ error message ေတြကိုေျပာတာပါ)။ တခါတရံမွာ start button ကို အႀကိမ္ႀကိမ္ႏွိပ္ေသာ္လည္း ဘာ error မွမျပဘဲ server အလုပ္မလုပ္ျဖစ္ေနတက္ပါေသးတယ္။
ဒီျပႆနာျဖစ္ရျခင္း အေၾကာင္းအရင္းက အမ်ားအားျဖင့္ port နံပတ္မ်ား ေရာေထြးကုန္ျခင္း ျဖစ္ပါတယ္။ Network protocols ေတြကို အသုံးျပဳၾကရတဲ့ applications ေတြဟာ သီျခား port တစ္ခုဆီကို အသုံးျပဳၿပီး Network မွာ ခ်ိတ္ဆက္အလုပ္လုပ္ေနၾကတာျဖစ္ပါတယ္။ ဒီလိုမ်ိဳး Port နံပတ္ေတြနဲ႔ IP Address ေၾကာင့္သာ Network ထဲမွာ Host နဲ႔ Service ကို ခြဲျခားနိုင္တာျဖစ္ပါတယ္။ ေလာေလာဆယ္ေတာ့ port အေၾကာင္း ဒီေလာက္ပဲသိထားပါဦး။ တစ္ခ်ိန္တည္းမွာ port နံပတ္တစ္ခုကို Application တစ္ခုကသာသုံးနိုင္ပါတယ္။ ဒီကိစၥနဲ႔ပတ္သက္လို႔ပဲ Apache Not Running error ျဖစ္လာရတာပါပဲ။ ဘာျဖစ္လို႔လဲဆိုေတာ့ Apache Web service(HTTP) ရဲ့ default port နံပတ္ျဖစ္တဲ့ 80 ကို တခါတေလမွာ အေၾကာင္းတိုက္ဆိုင္ၿပီး တျခား application တစ္ခုက အရင္ယူသုံးႏွင့္ၿပီးသား ျဖစ္တက္တာပါပဲ။ အဲဒီေတာ့ Apache web server အလုပ္မလုပ္နိုင္ဘူးျဖစ္သြားတာေပ့ါ။ ဒါကိုေျဖရွင္းဖို႔ရန္ကေတာ့ default port နံပတ္ကို အျခား သင့္ေတာ္တဲ့ နံပတ္ေျပာင္းမလား ဒါမွမဟုတ္ Apache default port နံပတ္ကို ယူသုံးေနတဲ့ တျခား application ရဲ့ service ကိုပိတ္ပစ္မလားဆိုတာပါပဲ။ ေအာက္မွာ ဥပမာေလးနဲ႔ ဆက္ရွင္းသြားပါမယ္။ ပထမဆုံး XAMPP control panelမွာ ဘာ Error မွ မျပဘဲ server အလုပ္မလုပ္တဲ့အခါမွာ error ကိုသိနိုင္ဖို႔ ေအာက္ပါအတိုင္းလုပ္ေဆာင္သြားပါ။

၁။ XAMPP install လုပ္ထားတဲ့ directory ထဲကိုဝင္ပါ ၿပီးရင္ XAMPP ဖိုဒါကို ဖြင့္ပါ၊ အဲထဲေရာက္မွ Shift + right click ႏွိပ္လိုက္ပါ အဲဒီအခ်ိန္မွာ Windows menu ေလးပြင့္လာမယ္၊ အဲထဲကေနမွ Open command window here ဆိုတာကိုေရြးႏွိပ္ပါ။ ဒါၿပီးရင္ေတာ့ command prompt ပြင့္လာပါၿပီ။ command prompt ထဲကို XAMPP ဖိုဒါထဲက apache_start.bat ဖိုင္ကို ဆြဲထည့္လိုက္ပါ။ ဒီအခ်ိန္မွာေတာ့ error message ေတြကို ေတြ႕နိုင္ၿပီးျဖစ္ပါတယ္။ နမူနာကို ပံု-၃ ၾကည့္ပါ။
“Only one usage of each socket address (protocol/network address/port) is normally permitted. make_sock: could not bind to address [::]:433” ဒီ error message မွာ ဆိုလိုခ်င္တာက အေပၚမွာေျပာခဲ့သလို Apache ရဲ့ default HTTPS port နံပတ္ျဖစ္တဲ့ 443 ကို တျခား process တစ္ခုက ယူသုံးထားသလိုမ်ိဳး ျဖစ္ေနတာပါ။ Apache အလုပ္လုပ္နိုင္ဖို႔အတြက္ apache ရဲ့ default configuration အရ HTTP port 80 နဲ႔ HTTPS port 443 (၂) ခုလုံးဟာ ပြင့္ေနဖို႔လိုအပ္ပါတယ္။ ဒီ error ရၿပီးတဲ့ေနာက္မွာ ဘယ္ application က port 443 ကို ယူသုံးေနလဲသိရေအာင္ ေအာက္ပါ command ေလးကို run ၾကည့္ပါမယ္။

netstat -o -n -a | findstr 0.0:443
(ဒီ command မွာပါတဲ့ port နံပတ္ 443 ေနရာမွာ မိမိ error message မွာျပတဲ့ port နံပတ္နဲ႔ အစားထိုးပါ ဒါက နမူနာျဖစ္ပါတယ္။)

ပံု-၄ မွာေတြ႕ရတာကေတာ့ Port 443 ကို အသုံးျပဳလၽွက္ရွိေနတဲ့ application နဲ႔ သူရဲ့ process ID ျဖစ္တဲ့ PID 2064 ျဖစ္ပါတယ္။ ဒီဟာကို သိၿပီးတဲ့ေနာက္မွာ PID 2064 နဲ႔ run ေနတဲ့ process ဟာ ဘာ application လဲသိခ်င္ရင္ေတာ့ Windows က Task Manager ကိုသြားပါ Process ဆိုတဲ့ Tab ကို ေရြးပါ၊ အဲမွာ လက္ရွိ run ေနတဲ့ process ေတြရဲ့ list ကို ေတြ႕ရပါမယ္။ မိမိအေျခေနနဲ႔ ကိုက္ညီတဲ့ PID ကိုရွာၾကည့္လိုက္႐ုံပဲျဖစ္ပါတယ္။

Task Manager > Process(Tab) > Select Columns

ပံု-၅ Task Manager မွာ PID 2064 နဲ႔ Run ေနတဲ့ Application ဟာ vmware-hostd.exe ျဖစ္တယ္ဆိုတာ ေတြ႕ရမွာျဖစ္ပါတယ္။ ဒီေကာင္ကပဲ Apache process ကို မစတင္နိုင္တဲ့ ျပႆနာကို ျဖစ္ေစတာျဖစ္ပါတယ္။

၂။ ဒီလိုအေျခေနမ်ိဳးမွာ ေျဖရွင္းဖို႔ နည္းလမ္း (၂)ခု ရွိပါတယ္။ ပထမနည္းလမ္းကေတာ့ ရွင္းပါတယ္။ port 443 နဲ႔ လက္ရွိ run ေနတဲ့ application ရဲ့ process ကို ရပ္တန္႔ပစ္ဖို႔ျဖစ္ပါတယ္။ Process ကို kill တယ္လို႔လဲ ေခၚပါတယ္။ ဒီလိုလုပ္ဖို႔အတြက္ ပုံ-၅ မွာေတြ႕ရသလို မိမိနဲ႔သက္ဆိုင္တဲ့ PID ကို select လုပ္ၿပီး ညာဘက္ေအာက္ေျခမွာရွိတဲ့ End Process ကိုႏွိပ္ေပးလိုက္႐ုံပါပဲ။ သို႔ေသာ္လည္း ဒီနည္းလမ္းဟာ တခါတေလ ျပႆနာကို မေျဖရွင္းေပးနိုင္ပါဘူး ဘာျဖစ္လို႔လဲဆိုေတာ့ kill လိုက္တဲ့ process ဟာ kill ၿပီးတဲ့ေနာက္မွာ တဖန္ အလိုေလ်ာက္ျပန္ run ေနတက္လို႔ပဲျဖစ္ပါတယ္။
ဒုတိယနည္းလမ္းအေနနဲ႔ကေတာ့ Apache ရဲ့ default port 443 ကို လက္ရွိ တျခားဘယ္ process ကမွ အသုံးမျပဳေသးတဲ့ သင့္ေတာ္ရာ port နံပတ္တစ္ခုခုနဲ႔ ေျပာင္းလဲအစားထိုးဖို႔ျဖစ္ပါတယ္။ ေျပာင္းလဲနိုင္ဖို႔ရာ XAMPP install လုပ္ထားတဲ့ directory ထဲကေန httpd-ssl.conf ဖိုင္ ထဲကိုဝင္ျပင္ရမွာျဖစ္ပါတယ္။ နမူနာအေနနဲ႔ C: drive ထဲမွာ install လုပ္ထားတယ္ဆိုပါစို႔။ Windows key + r ကိုႏွိပ္ၿပီး ေအာက္က လိပ္စာကို ထည့္လိုက္ပါ၊ ၿပီးရင္ keyboard ကေန Enter ႏွိပ္ပါ။

C:xampp\apache\conf\extra\httpd-ssl.conf

Enter ေခါက္ၿပီးရင္ေတာ့ ပံု-၆ အတိုင္း httpd-ssl.conf ဖိုင္ ပြင့္လာမွာျဖစ္ပါတယ္။ ဒါမွအဆင္မေျပေသးရင္ ၎ directory ထဲကိုသြားၿပီး httpd-ssl.conf ကို right-click ႏွိပ္ ၿပီးရင္ Text Editor တစ္ခုခုနဲ႔ ဖြင့္လိုက္ပါ။ ဒီမွာေတာ့ Notepad++ ဆိုတဲ့ text editor ကိုအသုံးျပဳထားပါတယ္။ အဲဖိုင္ပြင့္လာရင္ Listen port 443 ကို ရွာပါ။ ၿပီးရင္ ပုံထဲကလို 4430 နဲ႔ အစားထိုးခ်င္ထိုး ဒါမွမဟုတ္ တျခား ဘယ္ process ကမွ အသုံးျပဳမွာ မဟုတ္ဘူးလို႔ သင့္အေနနဲ႔ ေသခ်ာသိပါက အဲနံပတ္နဲ႔ အစားထိုးသုံးသင့္ပါတယ္။ change ၿပီးရင္ေတာ့ ဖိုင္ကို save ဖို႔ မေမ့ပါနဲ႔ (Ctrl + s)။ ဒါၿပီးရင္ေတာ့ ပုံမွန္အလုပ္လုပ္ၿပီလို႔ထင္ပါတယ္။ အထက္မွာေဖာ္ျပထားတဲ့ vmware တို႔ PID 2064 တို႔ ဆိုတာ နမူနာေတြ ျဖစ္တယ္ဆိုတာ သတိထားေပးပါ။ စာဖတ္သူမွာ ၾကဳံရတဲ့ အေျခအေနနဲ႔ကြဲျပားနိုင္ပါတယ္။ ဥပမာ vmware ေနရာမွာ Skype တို႔ Internet Explorer တို႔လဲ ျဖစ္ခ်င္ျဖစ္ေနတက္ပါတယ္။ ဒါေပမဲ့ ေျဖရွင္းရမယ့္ နည္းလမ္းကေတာ့ ဒီအတိုင္းပါပဲ။

Credit to C# and programming languages for beginners

0 comments:

Post a Comment