차림

2010년 4월 27일

펄 CGI 오류 해결하기

펄 CGI 파일을 새로 올렸더니 500 Internal Server Error가 뜨니? 그런데 원인을 모르겠어? 참 답답하겠다. 같이 방법을 찾아보자꾸나.

1. 파일 위치

맞는 폴더에 cgi 파일을 올렸는지 확인해 봐. 엉뚱한 데 올렸는지도 모르잖아.

그리고 아무데서나 cgi가 작동되기도 하지만 서버에 따라선 정해진 폴더에서만 cgi가 작동되는 경우도 있어. 지금은 잘 모르겠지만 예전에 천리안이 그랬거든. 그러니까 cgi가 작동되는 폴더가 따로 정해진 건지도 확인해 봐야겠지?

2. 파일 전송 모드

펄 cgi 파일은 아스키 파일이야. 그래서 아스키 파일로 올려야지 바이너리 파일로 올리면 안 되거든. 아스키 모드로 파일을 올린 게 맞는지 확인해 봐.

3. 파일 권한

cgi 파일이 작동하려면 읽기, 쓰기, 실행 등 그에 맞는 권한을 줘야 해. 무식하게 영어로 퍼미션이라고 하는 거 말야.

폴더나 파일에 주는 권한은 보통 숫자로 얘기하는데 실행 파일인 경우 755인 경우가 많지. 하지만 이건 서버 환경이라든가 조건에 따라 조금씩 다를 수 있으니까 cgi 프로그램 설명서를 읽어보고 그래도 안 되면 서버 관리자에게 물어보렴. 그리고 권한을 맞게 줬는지 확인해 봐.

4. 펄 경로

대개 펄 경로는 /usr/bin/perl 이란다. 그래서 cgi 실행 파일의 첫 줄은 아래로 시작하지.


#!/usr/bin/perl

하지만 특이하게 펄 경로가 이게 아닌 데가 있어. 예를 들어 천리안은 펄 경로가 /usr/local/bin/perl 이거든. 지금은 바뀌었을지도 모르겠다.

하여튼 펄 경로가 틀리면 cgi가 작동을 안 해. 그러니까 cgi 실행 파일을 열어서 펄 경로가 맞는지 확인해 봐.

5. 파일 내용 오류

혹시 cgi 파일 내용에 손대지 않았니? 그렇담 프로그램 소스에서 실수를 했을지도 모르겠네.

이런 파일에 손을 댈 땐 원래 파일을 따로 저장해 두렴. 만일의 경우에 대비해서 말야. 만약 파일을 좀 고쳐서 새로 올렸더니 오류가 나더라. 그래서 고치기 전 원래 파일을 다시 올려봤더니 문제가 없더라. 그렇다면 파일 소스를 고치면서 실수를 했다는 뜻이잖아.

이 문제는 직접 해결하는 수밖에. 도와줄 수가 없다.

6. SFTP 전송 문제

위에서 말한 거 다 확인해 봤는데 아무 문제가 없어? 그런데도 500 Internal Server Error가 뜨니? 그렇담 최후의 방법을 알려 주지.

혹시 SFTP로 cgi 파일을 올리지 않았니? 그렇담 SFTP 말고 그냥 FTP로 올려 보렴. 어때? 이제 cgi가 제대로 작동되지?

내가 그랬거든. 이것저것 다 해봐도 안 되는 거야. 그래, 혹시나 해서 SFTP 말고 FTP로 올렸더니 그제야 제대로 작동되지 않겠어?

왜 그러냐구? 그거야 나도 모르지. 서버 문제인지 FTP 프로그램 문제인지. 사람들이 아주 많이 쓰는 FTP 프로그램이라서 프로그램 자체의 문제인 것 같지는 않지만.

아니야? 그냥 FTP로 올려도 안 돼? 그럼 나도 몰라. 안됐지만 알아서 해 봐.

목록