>> Edit article
이름
제목
패스워드
소스는 자세히는 안봤습니다만 대충 무엇이 문제인지 감은 잡힙니다 우선 gcc -Wall 옵션을 붙여 컴파일 해보신후 코딩이 정확한지 체크하신후 그래도 안되신다면 httpd.conf 설정 파일중 [↙Directory ↙] Option ExecCGI ..... (적수보드에서 특수 문자를 필터링해서 위와같이 표현) 이부분에 ExecCGI 를 추가해보시고 (보안상 문제는 있지만) 그래도 안된다면 파일 권한을 확인해보세요 일반적으로 디렉토리에 파일을 쓰지 못하는경우 문제가 발생합니다. 웹서버가 nobody로 돌아가고 있다면 chown nobody.nobody gbook.html 이런식으로 gbook.html 파일을 소유권을 바꿔보시길 바랍니다. : 일반 사용자 계정에서 cgi 실행이 가능하도록 세팅은 되어있는 상태입니다 : 물론 다른 cgi 파일은 잘 실행됩니다... : 단지 이 프로그램 만이 Internal Server Error 가 나는데요 : 환장하겠습니다 : 제 생각에는 아파치 설정보다는 프로그램 상의 오류가 있는거 같은데 : 잘 모르겠네요... : 그리고 에러 로그를 보면 다음과 같은 에러가 납니다 : : Premature end of script headers: /export/home/kkk/public_html/cgi-bin/guestbook.cgi : : 소스는 다음과 같습니다... : : : #include <stdio.h> : #include <stdlib.h> : #include <string.h> : #include <time.h> : #include "cgiutil.h" : : #define TRUE 1 : #define FALSE 0 : #define BUFSIZE 1024 : #define MAX_ENTRIES 10000 : : int embedSSI(char *str); : typedef struct { : char *name; : char *value; : } ENTRY; : : : /* 문자열 str안에 SSI 구문이 포함돼 있는지 체크 */ : : int embedSSI(char *str) : { : if(strstr(str, "<!--#")) : return(TRUE); : else : return(FALSE); : } : : : /* SSI가 문자열 안에 포함돼 있을 경우 출력해주는 에러 메시지 */ : : void ssiErrMsg() : { : printf("<CENTER>"); : printf("<H1>SSI 문장이 포함돼 있습니다.</H1><BR><HR>"); : printf("<H3><BLINK>등록을 취소합니다.</BLINK><BR><BR>"); : back(); : } : : : : int main() : { : int i; : int cl; : char buf[BUFSIZ]; : time_t Ourtime; : : FILE *fp; : ENTRY entVal[MAX_ENTRIES]; : : : if((fp = fopen("../gbook.html", "a")) != NULL) { : printf("Content-type: text/html"); : if(!strcmp(getenv("CONTENT_TYPE"), "application/x-www-form-urlencoded")) { : cl = atoi(getenv("CONTENT_LENGTH")); : for(i = 0; cl && (!feof(stdin)); i++) { : entVal[i].value = fmakeword(stdin, '&', &cl); : plustospace(entVal[i].value); : unescape_url(entVal[i].value); : entVal[i].name = makeword(entVal[i].value, '='); : if(embedSSI(entVal[i].value)) { : ssiErrMsg(); : exit(-1); : } : } : : Ourtime = time(NULL); : /* 이름과 E-Mail 주소 입력 */ : sprintf(buf, "<A HREF="mailto:%s">%s</A>", entVal[1].value, entVal[0].value); : fputs(buf, fp); : : /* 전화번호 */ : sprintf(buf, " (%s)<BR><BR>", entVal[2].value); : fputs(buf, fp); : sprintf(buf, "%s<BR><HR>", entVal[3].value); : fputs(buf, fp); : fclose(fp); : : printf("<H1 ALIGN=center><BLINK>방명록을 작성해 주셔서 감사드립니다. </H1></BLINK><BR>"); : printf("<CENTER>"); : printf("<FONT SIZE=+1><A HREF="//">홈페이지</A></FONT> "); : printf("<FONT SIZE=+1><A HREF="gbook.html/">방명록보기</A></FONT>"); : printf("<BR><HR>"); : : /* 자바스크립트로 만든 Back */ : back(); : printf("</CENTER>"); : } : } : : return 0; : } -- -?
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved