Windows 10 에서 XAMPP 사용 시 httpd port 에러 원인 및 해결 방법

Windows 10 에서 XAMPP 사용 시 httpd port 에러 원인 및 해결

Windows 10이 설치된 컴퓨터에서 XAMPP를 실행하고 Apache를 Start 하려고 하면 httpd port, 즉 80번 포트를 이미 다른 응용프로그램이 사용하고 있어 차단되었다고 아래와 같이 표시된다.

Problem detected!
Port 80 in use by “Unable to open process” with PID 4!
Apache WILL NOT start without the configured ports free!
You need to uninstall/disable/reconfigure the blocking application
or reconfigure Apache and the Control Panel to listen on a different port

1

만일 다른 응용프로그램이 80번 포트를 사용하고 있지 않다면 단 하나 “World Wide Web Publishing Service” 때문이다.

Ctrl + Alt + Del 키를 눌러 작업관리자->프로세스 탭을 열고 스크롤을 내려 “서비스 호스트: 인터넷 정보 서비스”를 펼쳐보자. 대개는 “서비스 호스트: 인터넷 정보 서비스(2)”와 같이 제목에 괄호 속에 숫자가 추가되어 있을텐데 이것은 이 서비스에 관련된 2개의 하위 서비스가 있다는 것이다. 제목의 왼쪽에서 “>”를 누르면 목록이 펼쳐지며 아래와 같이 표시된다.

2

목록 중에 “World Wide Web Publishing Service”가 보일 것이다. 일단, httpd 서비스를 실행하기 위해 이 서비스를 끝내보기로 하자.

“World Wide Web Publishing Service”를 선택하고 우측 하단의 [작업 끝내기(E)] 버튼을 눌러 서비스를 중지시켜보자.

그러면 아래와 같이 “World Wide Web Publishing Service”가 사라졌을 것이다.

3

이제 “World Wide Web Publishing Service”를 중시시켰으므로 XAMPP에서 Apache를 시작해보자.

4

위 그림에서 아래 쪽 연두색 박스 안에 아래와 같이 메시지가 표시되며 Apache가 정상적으로 실행되는 것을 확인할 수 있다.

Attempting to start Apache app…
Status change detected: running

 

재부팅 후에도 World Wide Web Publishing Service 사용하지 않기

앞에서 작업관리자를 통해서 현재 실행중인 프로세스를 중지시킴으로써 Apache가 사용하는 80번 포트 충돌 문제를 해결했다. 그러나 컴퓨터를 껐다 켜면? 여전히 문제는 남는다. 왜냐하면 World Wide Web Publishing Service는 Windows의 Service에 속한 프로그램으로 기본적으로는 컴퓨터를 켤 때 자동으로 시작되도록 설정되어 있기 때문이다. 이 문제를 해결하려면 “서비스” 관리자에서 World Wide Web Publishing Service를 중지함은 물론, 사용 안함으로 해두어야 한다.

서비스 관리자를 여는 방법은 다음과 같이 몇 가지가 있다.

  1. Window 키 + R을 눌러 services.msc 를 입력하고 엔터키 또는 확인 버튼을 눌러 서비스 관리자를 실행하는 방법
    5
  2. Windows 10 왼쪽 하단의 “웹 및 Windows 검색” 상자에 “서비스”를 입력하고 위쪽 검색 결과 목록에 “서비스/데스크톱 앱”이 표시되면 클릭하여 실행하는 방법
    6

    7

  3. Windows 10 왼쪽 하단의 “웹 및 Windows 검색” 상자에 “services.msc”를 입력하고 위쪽 검색 결과 목록에 “서비스/데스크톱 앱”이 표시되면 클릭하여 실행하는 방법

위 세 가지 방법 중 하나로 서비스 관리자를 열면 다음과 같은 화면이 표시된다.

8

스크롤을 내러 W3SVC, 즉 World Wide Web Publishing Service를 찾아보자.

앞에서 작업관리자를 통해 프로세스를 끝냈으므로 화면에는 “중지됨”이라고 표시되어 있다.

이제 다음에 컴퓨터를 새로 켤 때도 중지된 상태로 유지시키기 위해서는 서비스 설정을 변경해야 한다.

World Wide Web Publishing Service를 마우스로 더블클릭해서 속성 창을 열어보자.

9

World Wide Web Publishing Service 속성 창에서 보면 시작 유형에 자동으로 표시되어 있다.

이 부분을 클릭해서 펼치면 다음과 같이 시작 유형을 선택할 수 있다. 그 중에서 “사용 안 함”을 선택하고 [확인] 버튼을 눌러 설정을 마치자.

10

11

위와 같이 설정하고 서비스 관리자에서 목록을 보면 다음 그림과 같이 시작 유형이 “사용 안 함”으로 변경된 것을 확인할 수 있다.

12

이제 다음부터는 컴퓨터를 새로 시작해도 World Wide Web Publishing Service가 중지된 상태로 시작될 것이다.

끝.

 

 

 

Javascript 예약어

자바스크립트 코딩을 하면서 문법이나 수식 등에 전혀 문제가 없는데도 실행이 되지 않고 에러가 발생하는 경우가 있다. 당연히 이런 경우에는 문제점을 발견하는데 시간이 아주 오래 걸린다. 드물지 않게 많은 이들이 변수나 함수 등을 생성하면서 자바스크립트가 예약한, 즉 사용하지 말라고 한 단어들을 사용해서 에러가 발생하는 경우가 있다. 대부분은 자신만의 코딩 규칙을 가지고 있으면 겪지 않을 수 있지만 만에 하나 이런 경우가 발생하면 몇 시간을 걸려 찾아 헤메고 나서 얼마나 허탈하겠는가.

이 글은 http://www.w3schools.com/js/js_reserved.asp 에 설명된 내용을 토대로 자바스크립트 예약어를 정리해보았다(거의 그대로 옮긴 것임).

 

 

자바스크립트에서는 일부 식별자들이 예약어로 되어 있어서 변수 이름이나 함수 이름으로 사용할 수 없다.

자바스크립트 표준

모든 최근의 브라우저들은 ECMAScript 3 (ES3, 자바스크립트 3 번째 버전, 1999)를 완벽하게 지원한다.

ECMAScript 4 (ES4) 는 적용된 적이 없다.

ECMAScript 5 (ES5, 2009년 발표)는 JavaScript의 가장 최근 발표된 공식 버전이다.

시간이 지남에 따라 모든 브라우저들은 ES5를 지원하고 있다.

 

자바스크립트 예약어

자바스크립트에서 아래의 예약어들은 변수명, 라벨(label), 함수명으로 쓸 수 없다.

abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum* eval export*
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let long native new null
package private protected public return
short static super* switch synchronized
this throw throws transient true
try typeof var void volatile
while with yield

* 표시 된 것은 ECMAScript5에서 새로 추가된 것이다.

 

JavaScript Objects, Properties, and Methods

아래의 자바스크립트 내장 객체, 속성, 메소드 또한 사용하지 말아야 한다.

Array Date eval function hasOwnProperty
Infinity isFinite isNaN isPrototypeOf length
Math NaN name Number Object
prototype String toString undefined valueOf

 

Java 예약어

JavaScript는 는종종 java와 함께 사용된다. 따라서 몇몇 java 객체와 속성들을 자바스크립트에서와 마찬가지로 사용하지 말아야 한다.

getClass java JavaArray javaClass JavaObject JavaPackage

 

Windows 예약어

다음 HTML과 Windows 예약어는 사용하지 말아야 한다.

alert all anchor anchors area
assign blur button checkbox clearInterval
clearTimeout clientInformation close closed confirm
constructor crypto decodeURI decodeURIComponent defaultStatus
document element elements embed embeds
encodeURI encodeURIComponent escape event fileUpload
focus form forms frame innerHeight
innerWidth layer layers link location
mimeTypes navigate navigator frames frameRate
hidden history image images offscreenBuffering
open opener option outerHeight outerWidth
packages pageXOffset pageYOffset parent parseFloat
parseInt password pkcs11 plugin prompt
propertyIsEnum radio reset screenX screenY
scroll secure select self setInterval
setTimeout status submit taint text
textarea top unescape untaint window

 

HTML Event Handlers

추가적으로 HTML에 마우스 클릭 등과 같은 사건(event)이 발생했을 때 이를 캐치하여 제어하는 핸들러들도 변수 이름이나 함수 이름, 메소드 등에 사용하지 말아야 한다.

 

onblur onclick onerror onfocus
onkeydown onkeypress onkeyup onmouseover
onload onmouseup onmousedown onsubmit