서버는 mime type이 application/x-httpd-cgi이거나
(아파치 1.1 이후) 핸들러가 cgi-script인 모든
파일을 CGI 스크립트로 인식하여, 실행하고, 그 결과를 클라이언트에게
보낸다. 파일이
서버는 CGI 스크립트를 부를때 DOCUMENT_ROOT라는
환경변수를 추가한다. 이 변수는
아파치에서 CGI 스크립트를 사용하는 방법에 대한 소개는 CGI로 동적 페이지 생성 투토리얼을 참고하라.
유닉스에서 다중쓰레드 MPM을 사용한다면 이 모듈대신
서버는 다음과 같은 방법으로 CGI 표준이 설명하는 CGI 환경변수를 설정한다:
off로
지정한 경우에만 설정한다. /more/path/info) 받는다.
On으로
설정한 것과 같다.on이고 (기본값은
off), 접속한 호스트 주소를 역DNS 검색하여 실제 호스트명을
찾은 경우에만 설정한다.on이고, 접속한
호스트가 ident 프로토콜을 지원하는 경우에만 설정한다.
쉽게 이 값을 속일 수 있기때문에 이 변수의 내용을 믿으면
안되고, 클라이언트와 서버 사이에 프록시가 있다면 변수
내용이 완전히 무의미함을 주의하라.어디에서 잘못 실행되는지 스크립트의 출력을 (표준출력과 표준오류) 볼 수 없기때문에 CGI 스크립트는 전통적으로 디버깅하기 어려웠다. 아파치 1.2 이후에 추가된 지시어를 사용하면 발생한 오류를 자세히 로그에 남길 수 있다.
CGI 오류로그는 정상적으로 실행하지 못한 CGI를 기록한다. 오류가 발생한 CGI 스크립트는 로그에 여러 줄의 정보를 남긴다. 첫번째 두 줄은 항상 아래와 같은 형식이다:
CGI 스크립트를 실행할 수 없는 오류인 경우 로그파일에 추가로 두 줄을 더 기록한다:
스크립트가 (보통 스크립트의 버그때문에) 잘못된 헤더 정보를 반환하는 경우, 다음 내용을 로그에 기록한다:
(스크립트가 표준출력이나 표준오류에 아무 내용도 출력하지 않았다면 %stdout과 %stderr 부분은 생략될 수 있다).
자식 프로세스를 실행하는 사용자, 즉
스크립트 로그는 CGI 스크립트를 작성할때 디버깅을 위한 용도이지 서버를 실행하는 동안 계속 사용하기위함이 아님을 주의하라. 속도와 효율성면에서 최적화가 안되있고, 설계한 목적이외의 방법으로 사용하면 보안상 문제가 될 수 있다.
큰 내용을 받아서 로그파일이 너무 빨리 커지는 현상을 막기위해 파일에 기록할 PUT 혹은 POST 내용의 크기를 제한한다. 기본적으로 1024 바이트까지 로그에 기록하지만, 이 지시어를 사용하여 수정할 수 있다.