한글 파일 다운로드 관련해서 다운이 안되는 문제

dewytear의 이미지

제가 운영하고 있는 학교의 과 서버에서의 문제입니다.
자료를 올릴수 있는 게시판을 달고 자료실을 운영하려하는데
영문으로된 파일일 경우 다운로드가 잘 됩니다.
그러나 한글로된 파일일 경우에는 다운로드가 안되고
페이지를 찾을 수 없다고 나오는데.. 어떻게 해결이
가능할까요 ?

서버의 환경은 RedHat 8.0 , httpd-2.0.43, mysql-4.0.14, php-4.2.3 입니다.
선배님들의 정감어린 조언 부탁드립니다. :D

supersky의 이미지

IE때문입니다.
IE에서 메뉴 도구->인터넷옵션->고급->탑색->URL을 항상UTF-8로 보냄
이부분이 Check되어 있으면 한글파일이 다운로드 안됩니다.
그 부분 Check를 해제한다음 IE를 모두 종료하고 다시 실행시킨후에 하시면 정상적으로 동작합니다.

이런문제를 없엘려면요...

<a href=xxxxx.xxx>이렇게 다운로드 되어 있는 부분을 파일을 다운로드할수 있는 프로그램을 만들어서 처리하면 되거든요...

PHP로 만든건데요... 제가 예전에 만들었던건데 수정을 좀 하셔야 할듯 하거든요...

<?

        // 에러 메시지 다이얼로그를 띄운다
        function errmsg($message) {
                echo ("
                        <script>
                window.alert('$message')
		history.go(-1)
		window.close()
		</script> ");
        }

	if(!$name)
	{
		errmsg("파일명을 입력해 주십시오.");
                exit;
	}

	if(!$code)
	{
		errmsg("파일위치를 지정하십시오.");
		exit;
	}

	$filepath = "$DOCUMENT_ROOT/filebank/$code/$name";
	$filetype = strtolower(substr($name, -3));

	$filename = $name;

	if(!file_exists($filepath))
	{
		errmsg("파일을 찾을수가 없습니다. $filepath");
		exit;
	}

	if($filetype=='pdf') {
		Header("Content-type: application/pdf\r\n");
	} else {
		Header("Content-Type: doesn/matter\r\n"); 

		Header("Content-Disposition: filename=". $filename . "\r\n\r\n"); 
		Header("Content-Transfer-Encoding: binary\r\n"); 
	}

	$fp = fopen($filepath, "r");
	$fpdata = fread($fp, filesize($filepath));
	fclose($fp);
	print $fpdata;

//	header("Content-type: application/octet-stream");
//	header("Content-Lenght".filesize($filepath));
//	header("Content-disposition: attachment; filename=$filename");
//	header("Pragma: no-cache");
//	header("Expires: 0");

?>

도움이 되셨으면 합니다.
아참 이거 IE5대에 만든거거든요.. IE6대에서 이상없이 할려면 받드시 수정하세요.... phpschool.com에 가시면 이 부분에 대한 정보가 많이 있습니다.

그럼..

void main()
{
printf("Hello World\n");
exit(0);
}
/* 초심으로 돌아가자~~~~~ */

dewytear의 이미지

먼저 답변 감사드립니다.
PHP를 이용한 좋은 방법인것 같습니다. 하지만 서버쪽에서 문제를 해결해보려합니다.

그동안 여러 군데에서 알아보았는데요.
mod_url.c를 설치 하면 된다고 하시더군요.
그래서 설치를 하던중에 문제가 생겨서 이렇게 또 질문을 드립니다.

빨간모자8.0 , httpd-2.0.43, mysql-4.0.14, php-4.2.3, libiconv-1.9.1을 소스설치 하였고
apache-devel-1.3.12-2.i386.rpm 을 설치 하였습니다.

여러 문서들을 둘러보고 질문과 답변을 보았는데요.
mod_url.c 을 설치하려는데..
gcc -fpic -DSHARED_MODULE -I/usr/include/apache -c mod_url.c 하면..

mod_url.c: In function `check_redurl':
mod_url.c:218: warning: passing arg 2 of `libiconv' from incompatible
pointer te

위와 같이 나오면서 설치가 되질 않습니다.

P.S : 주위에서는 그냥 UTF-8 체크 없애라는 공지를 달라고 하는데
이왕이면 서버 쪽에서 해결을 보고 싶습니다.
도와주세요

" Wanna fly with me ↗ "

confide의 이미지

컴파일 에러인걸보니.. 음... iconv 쪽 라이브러리 문제인가요?

제 경우에는 데비안에서 쉽게 해결했습니다.

아파치 패키지와 apache-dev 패키지였나 -.ㅡ;; 음.. 아파치 관련 모듈을 컴파일 하기 위한 패키지들을 설치해주고 컴파일 후에 httpd.conf를 수정하니 금새 해결되더군요.

http://kltp.kldp.org 에 설치방법까지 자세히 있던걸요? 레드햇 기준으로 :)

덤으로 mod_gzip, mod_bandwidth, mod_throttle 까지 설치해줘버렸습니다. :)

------------------
나는 바보

dewytear의 이미지

저도 그 문서는 보았습니다.
그문서 보고 apache-devel 설치하고 mod_url 구해서 깔려고 하던중
발생한 문제입니다.

저도 confide 님처럼 술술~ 해결이 되었으면 좋겠습니다.
부럽습니다. (T_T)

선배님들 도와주세요~ ^^;

" Wanna fly with me ↗ "

chunsj의 이미지

UTF-8로 보내는 것이 정상입니다. 그건 일본어 OS에서 파일을 올린 후 한글
OS에서 받아 보시면 알게 됩니다, 아시죠? 서버에서 고치는 것이 바른 방법이고
엉터리로 보내는 시스템이 많은 현재와 같은 과도기에는 날아오는 것을 보고
EUC-KR인지 UTF-8인지를 구분해서 mod_encoding과 같은 것으로 처리를
해 주는 것이 가장 올바른 방법 되겠습니다 :-)
그리고 서버에도 원칙대로 하자면 UTF-8로 저장하는 것이 좋습니다. 물론
나는 국제화 따위에는 관심도 없고 표준을 지키기도 싫어, 편한게 좋아라면
UTF-8 체크를 끄라고 해야겠죠, 그럼 아마 모든 XP들은 다 꺼야 될 것입니다.
그리고 표준에 맞추어져 있는 프로그램들도 다 수정해야 될 것이고...

dewytear wrote:
먼저 답변 감사드립니다.
PHP를 이용한 좋은 방법인것 같습니다. 하지만 서버쪽에서 문제를 해결해보려합니다.

그동안 여러 군데에서 알아보았는데요.
mod_url.c를 설치 하면 된다고 하시더군요.
그래서 설치를 하던중에 문제가 생겨서 이렇게 또 질문을 드립니다.

빨간모자8.0 , httpd-2.0.43, mysql-4.0.14, php-4.2.3, libiconv-1.9.1을 소스설치 하였고
apache-devel-1.3.12-2.i386.rpm 을 설치 하였습니다.

여러 문서들을 둘러보고 질문과 답변을 보았는데요.
mod_url.c 을 설치하려는데..
gcc -fpic -DSHARED_MODULE -I/usr/include/apache -c mod_url.c 하면..

mod_url.c: In function `check_redurl':
mod_url.c:218: warning: passing arg 2 of `libiconv' from incompatible
pointer te

위와 같이 나오면서 설치가 되질 않습니다.

P.S : 주위에서는 그냥 UTF-8 체크 없애라는 공지를 달라고 하는데
이왕이면 서버 쪽에서 해결을 보고 싶습니다.
도와주세요

cdpark의 이미지

chunsj wrote:
그리고 서버에도 원칙대로 하자면 UTF-8로 저장하는 것이 좋습니다. 물론
나는 국제화 따위에는 관심도 없고 표준을 지키기도 싫어, 편한게 좋아라면
UTF-8 체크를 끄라고 해야겠죠, 그럼 아마 모든 XP들은 다 꺼야 될 것입니다.
그리고 표준에 맞추어져 있는 프로그램들도 다 수정해야 될 것이고...

한국에서 편안하게 웹 서핑을 하려면 Windows OS를 쓴 기계에서 Internet Explorer로 UTF-8 옵션을 끈 채 사용해야 합니다. :cry: 표준요? :roll:

jedi의 이미지

표준이라고 하면 기계마다 틀리고 자고 나면 바뀌는것을 말하는 것이겠죠?

표준이르는 것이 회의를 느끼게 됩니다.

표준을 누가 정하는지 모르겠지만......

+++ 여기부터는 서명입니다. +++
국가 기구의 존속을 위한 최소한의 세금만을 내고, 전체 인민들이 균등한 삶을
영위할 수 있는 착취가 없는 혁명의 그날은 언제나 올 것인가!
-- 조정래, <태백산맥> 중에서, 1986년

dewytear의 이미지

답변 감사합니다.

컴파일시 에러가 나는 것은 변수 타입이 바뀌어서 입니다.
아마 218 라인이
const char *src = r->uri;
라면 이 부분에서 const 를 삭제하시면 해결이 될 겁니다.

const 없애고 컴파일 했더니 컴파일 성공했고요.
KLDP 에서 mod_url에 관련된 문서가 있어서 그걸 보고 하고있는데요.

: # cp mod_url.so /usr/lib/apache/

이부분에서 /usr/lib/apache/ 폴더가 없어서
/usr/local/apache/modules/ 폴더에 mod_url.so 파일을 넣었습니다.
(이렇게 해도 되는지요 ?)

: # chmod 755 /usr/lib/apache/mod_url.so

이부분은 당연히 제가 넣은곳의 경로로 퍼미션 주었고요.

: 그런 다음, /etc/httpd/conf/httpd.conf 를 열어서 다
: 음 라인을 추가/확인
: [...]는 생략했다는 뜻입니다.
: -----------8x-----------
: [...]
: LoadModule redurl_module modules/mod_url.so
: [...]
: AddModule mod_url.c
: [...]
: -----------8x-----------

: 2.3. mod_url 활성화
: ===================

: 아파치 설정 파일인 httpd.conf를 끝부분에
: 다음과 같은 내용을 추가합니다.
: ---------8X---------
: [...]
: <IfModule mod_url.c>
: CheckURL On
: </IfModule>
: --------------------

: 2.4 재실행
: ==========
: 이제 아파치를 재실행하면 한글 URL이 제대로 인식됩니다.

재실행 하면.. 다음과 같은 오류 메세지가 나옵니다.

Syntax error on line 260 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/mod_url.so into
server: /usr/local/apache/modules/mod_url.so: undefined symbol:
ap_table_setn

ap_table_setn 검색어로 검색을 해보았지만.. 이거에 대해서는
검색이 얼마 되지 않네요.
선배님들 지도 부탁드립니다.

" Wanna fly with me ↗ "

jedi의 이미지

아파치 1.3.x용 컴파일하신 것이 아난가요?

2.x용은 따로 있는것으로 아는데요..

+++ 여기부터는 서명입니다. +++
국가 기구의 존속을 위한 최소한의 세금만을 내고, 전체 인민들이 균등한 삶을
영위할 수 있는 착취가 없는 혁명의 그날은 언제나 올 것인가!
-- 조정래, <태백산맥> 중에서, 1986년

dewytear의 이미지

음.. 2.x 용 이라면..
따로 구해서 다시 컴파일 해야 하겠죠 ?

리눅스 좋다고 하지만.. 이런 건 좀 불편하군요.
혹시 이 문제를 해결 할 수 있는 방법이 있다면..
알려주시면 감사하겠습니다.

아니면.. 2.x용 으로 따로 다운 받을 수 있는 곳
이라도 알려주시면 더 할 나위가 없겠습니다.

" Wanna fly with me ↗ "

jedi의 이미지

실제로 해보지 않아서 확신은 못해도 ap_가 apr_로 바뀐것으로 보아 이것인듯합니다.
메이저 업그레이드가 원래 어렵더군요. 아직 1.3.x가 더 많이 쓰이고 있는 이유중의 하나겠지요.

http://kle.kldp.org/apache/mod_url-apache2.c
http://kle.kldp.org/apache/readme.mod_url

+++ 여기부터는 서명입니다. +++
국가 기구의 존속을 위한 최소한의 세금만을 내고, 전체 인민들이 균등한 삶을
영위할 수 있는 착취가 없는 혁명의 그날은 언제나 올 것인가!
-- 조정래, <태백산맥> 중에서, 1986년

dewytear의 이미지

jedi님 정말 답변 정말 감사합니다.

말씀듣고.. mod_url-apache2.c 로 재컴파일을 시도해보았습니다.
하아.. 죄송하지만.. 컴파일을 완료하지 못했습니다.
컴파일 하면 경고가 주루룩~ 뜨면서 되질 않는군요.

아파치를 1.x 로 새로 깔아야 할른지... 휴우
어떻게 다른 해결책은 없을까요 ?

힘드네요.. :(

" Wanna fly with me ↗ "

익명 사용자의 이미지

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.