C언어로 파일업로드 cgi를 짜봤는데요 파일오픈이 안되네요
#include // puts()
#include // strlen()
#include // O_WRONLY
#include // write(), close()
int main()
{
char ch;
int fd;
printf("Content-type: text/html\n\n");
printf("upload ver1.0\n\n");
if (( fd = open( "./test.txt", O_WRONLY | O_CREAT |O_TRUNC ,0644)) <= 0)
printf( "fileopen error\n");
printf( "fileopen start\n");
while(1) {
fscanf(stdin, "%c", &ch);
if(feof(stdin)) break;
write( fd, &ch, 1);
}
close( fd);
return 0;
}
----------------------------------------------------------------------------
소스코드이구요. 작업환경은 at91cap9stk 라는 임베디드 보드입니다.
아파치 버전은 1.3.41 이구요.
기존에 인터넷에서 돌아다니는 퍼미션이란 퍼미션은 다줘봤습니다.
현재는 디렉토리까지 풀로 777 인 상태입니다.
단순한 post로 넘어온 데이터를 받아서 파일에 기록하는 cgi입니다.
post값을 받으려고 stdin을 썼습니다
# ./upload.cgi
이렇게 실행하면 실행이 됩니다. 물론 파일도 생성이되고 정상적으로 쉘에서는 잘 작동이 됩니다.
하지만 웹에서 cgi를 실행 시키면 파일오픈에서 막혀버립니다.
// printf( "fileopen error\n");
저부분이 딱나와버리네요.
심지어 로그에도 아무런 오류코드가 안찍혀 있는데
왜 쉘에서는 파일이 생성되는데 cgi에서는 생성이 안될까요??
소스코드가 잘못된걸까요?
댓글 달기