시작페이지로 즐겨찾기추가
로그인
회원가입 l 출석체크 l 마이페이지 l CGIMALL
자료실 사이트등록 랭킹100 프로그램리뷰 관리자추천자료 초보가이드
커뮤니티
전체 펼쳐보기
퀵메뉴링크
jquery , CSS , PHP , Javascript , 무료폰트 , ASP
상세검색
> 상세보기 초보가이드
사이트등록
현재접속자 새로고침
게시판타이틀 초보가이드 / 상세보기
트위터로 보내기 미투데이로 보내기 싸이월드 공감
CGI가 에러날때
초보가이드 > 상세보기 | 2013-05-29 14:25:34
추천수 454
조회수   16,262

닉네임

HappyCGI

제목

CGI가 에러날때
내용
1 에러의 종류
2 500에러가 어디서 났는지 검사해보기
3 파일전송 모드
4 의 위치
5 퍼미션 설정
6 특수문자 처리
7 파일전송이 제대로 되지 않는 경우
8 CGI 접근을 허용하지 않는 경우
9 Perl 사용여부 테스트

1 에러의 종류 #


  • Bad request(잘못된 요청) 400:
    가장 일반적인 에러이며 이용자가 인터넷 주소(URL)를 잘못 입력했을때 발생합니다.
     
  • Unauthorized(권한없음) 401:
    역시 가장 일반적인 에러중의 하나입니다. 흔히 인터넷 브라우저(인터넷 익스플로러,넷스케이프)가 보낸 메시지가 서버에서 거부당할때 나타나는 메시지 입니다.
     
  • Forbidden(접근금지) 403:
    "접근금지"란 볼수 있는 권한이 없는 페이지를 보려고 할때 나타납니다.
     
  • Not found(파일없음) 404:
    가장 흔히 나타나는 메시지로 400 에러 메시지와 유사합니다. 기본적으로 요청한 페이지가 더이상 존재하지 않거나 틀린 웹주소(URL)인 경우입니다.
     
  • Internal Error(내부 에러) 500:
    웹서버가 내부 프로그램 문제로 요청한 웹문서를 서비스할 수 없을경우 입니다.
     
  • Not implemented(구현안됨) 501:
    이 메시지는 예를 들어, 웹페이지의 어떤 양식을 작성하고 '전송' 버튼을 클릭하였을 때 발생할 수 있습니다. 서버가 아직 이러한 기능을 지원하지 않는 경우입니다. 이 메시지는 전형적인 에러는 아니며 새로운 기능이나 양식등을 수행하였을 때 일어납니다.
     
  • Service temporarily overloaded(일시적 서버과부하) 502:
    서버에 과도하게 이용자의 접속(요청)이 몰리는 경우입니다. 일반적으로 "if at first you don't suceed..."라는 문구가 나옵니다. 해결책으로는 잠시후에 서버의 접속이 한가해질때 다시 접속해 보는 것입니다.
     
  • Gateway timeout(게이트웨이 시간초과) 503:
    이 메시지는 서버문제, 네트워크나 이용자 PC의 문제등으로 연결시간이 초과되었을때 발생합니다. 웹서버로 연결하는 도중에 장애가 생기는 경우에 주로 발생합니다.
     

2 500에러가 어디서 났는지 검사해보기 #

  • 텔넷으로 접속합니다.
  • 텔넷에서 아래와 같은 명령을 줍니다. 만약 오류나는 파일명이 test.cgi 라고 합니다.


     텔넷> perl test.cgi[엔터]
    
    
  • 오류나는 이유를 보고 해당 파일을 수정합니다.
     

3 파일전송 모드 #

윈도우즈(Windows 95/98/2000/NT)를 사용하시는 분은 펄스크립트를 FTP로 파일을 전송할 때 반드시 아스키 모드로 해야합니다. 유닉스와 도스는 텍스트 파일을 표현하는 형식이 다르기 때문에 파일포맷을 바꿔주어야 합니다. 만일 바이너리 모드로 전송했을 경우"Internal Sever Error" 라는 메세지를 출력합니다.


4 의 위치 #

펄스크립트에는 항상 맨 첫줄에 펄 프로그램을 수행할 서버 내의 펄 경로를 지정해 줍니다. 펄 경로가 맞지 않으면 프로그램을 수행할 수 없으므로 서버에러 메세지를 출력합니다. 대부분의 경우 #!/usr/bin/perl 또는 #!/usr/local/bin/perl이며 서버의 종류에 따라 다른 경로일 수도 있습니다.

확인방법은 텔넷으로 로긴하셔서 'which perl' 또는 'whereis perl' 이라는 명령어를 입력하고 엔터키를 치면 경로를 확인할 수 있습니다. 텔넷계정이 없는 분은 시스템 관리자에게 문의해야 합니다.


5 퍼미션 설정 #

펄스크립트의 확장자가 *.cgi 인 경우 실행 파일이므로 읽기(read)와 실행(execute)권한이 있어야 합니다. 다음은 텔넷과 FTP를 이용한 퍼미션 설정 방법입니다.

<텔넷>의 경우: 'chmod 755 myscript.cgi' 의 명령어를 이용하세요.
<FTP>의 경우: 파일소유자-읽기/쓰기/실행, 그룹-읽기/실행, 다른사용자-읽기/실행 의 모드로 전환해주세요.


6 특수문자 처리 #

Perl에서는 @ $ " ; &등의 특수문자들을 문법의 일부로 사용합니다. 펄에서 쓰는 특수문자를 브라우져를 통해 일반 문자로 인식 시키려면 반드시 문자 앞에 백슬래쉬(backslash, \)를 붙여줘야 합니다.

가장 흔히 에러가 나는 경우는 전자우편 주소, 예를 들어 myemail@email.com 이면 myemail\@email.com으로 해주어야 하고 HTML 태그를 쓸 때, href="http://happycgi.com"이면 href=\"http://happycgi.com\" 으로 해주어야 에러가 나지 않습니다.

특수문자 처리나 문법에 에러가 있을 경우 찾는 것은 하기싫은 작업 중 하나입니다. 이 경우에 텔넷으로 로긴해서 perl myscript.cgi 라고 입력하면 에러가 있는 부분을 표시해줍니다.


7 파일전송이 제대로 되지 않는 경우 #

에러메세지가 "prematured script" 라고 표시될 경우에는 파일전송이 성공적으로 되지 않은 경우입니다. 이 경우에는 파일을 다시 전송해서 덮어쓰면 되겠습니다.


8 CGI 접근을 허용하지 않는 경우 #

서버에서 사용자에게 CGI 접근을 허용하지 않는 경우입니다. 대부분 호스팅업체는 CGI 접근은 허용할 경우는 Perl을 제공하고 설치정보를 미리 알려주거나 홈페이지에 수록하고 있습니다. 그렇지 않을 경우 호스팅을 하는 시스템 관리자에게 문의하시기 바랍니다.


9 Perl 사용여부 테스트 #

- 자신의 계정의 CGI 사용여부를 테스트해보시려면 아래코드를 복사합니다.

#!/usr/bin/perl
print "content-type:text/html\n\n";
print "Hello world";

  • 복사한 코드를 test.cgi란 파일로 저장합니다.
  • test.cgi 파일을 FTP로 자신의 계정?아스키 모드로 업로드 합니다.
  • test.cgi의 퍼미션을 755로 바꿉니다. (chmod 755 test.cgi)
  • 브라우져에서 정확한 ?URL을 입력하고 엔터키를 칩니다. (http://www.mysite.com/~myid/cgi/test.cgi)
  • 서버에러가 나는 경우 경로를 #!/usr/bin/perl 또는 #!/usr/local/bin/perl 바꿔가면서 테스트합니다.
  • 금지(forbidden) 메세지가 나오면 Perl을 사용할 수 없거나 사용자 디렉토리에서 CGI 사용을 허용하지 않는 경우입니다.
추천스크랩소스보기 목록
이전게시글 CGI가뭐죠? 2013-05-29 14:20:37
다음게시글 유닉스 기본명령어 2013-05-29 14:28:30