PHP 한글 파일명 복사 안될때
페이지 정보
본문
PHP 4.4.1 + glibc 1.14
iconv encoding ISO-8859-1
PHP 5.2.17 + glibc 1.14
iconv encoding ISO-8859-1
PHP 5.6.40 + glibc 2.12
iconv encoding no value
PHP 7.2.11 + glibc 1.14
iconv encoding no value
<?php
copy("원본파일경로", "복사될경로);
?>
를 이용해서 파일 복사 로직을 만들어서 실행하니 아래와 같이 오류가 뜹니다.
Warning: copy(/home/test/www/rgboard/data/qa/2217$2$복용후기실수.hwp) [function.copy]: failed to open stream: No such file or directory in /home/test/www/g5/convert/rgboard3_g5_board_update.php on line 347
/home/test/www/rgboard/data/qa/2448$1$SSL17080.JPG -> /home/test/www/g5/data/file/qa/rgboard_2448_1.JPG
/home/test/www/rgboard/data/qa/2708$1$메일로 온 광고.png -> /home/test/www/g5/data/file/qa/rgboard_2708_1.png
실행결과 한글이 아닌 파일은 복사가 되었지만, 한글이 포함된 파일은 복사가 되지 않았습니다.
한가지 특이한 것은 png 확장자의 경우는 warning 없이 복사가 안되더군요.
구글에서 여러가지 검색키워드를 조합하며 찾고 또 찾으니 아래의 링크를 발견했습니다.
php에서 move_uploaded_file 한글 안됨 https://blog.naver.com/chunsj78/50111791242
그래서 확인해보니, 아래와 같이 서버의 언어설정이 아래와 같이 표시가 되네요
<유형1>
array(3) { ["input_encoding"]=> string(10) "ISO-8859-1" ["output_encoding"]=> string(10) "ISO-8859-1" ["internal_encoding"]=> string(10) "ISO-8859-1" } ==>
<유형2>
array(3) { ["input_encoding"]=> string(5) "UTF-8" ["output_encoding"]=> string(5) "UTF-8" ["internal_encoding"]=> string(5) "UTF-8" } ==>
다른 서버에서는 테스트를 안해봐서 이것에 대한 것은 좀더 확인이 필요할 듯 합니다.
국내서버와 해외서버 또 다른 결과가 나올수 있을듯 합니다.
아래와 같이 파일을 iconv 해주니까 복사 안되던 것들이 정상적으로 복사가 되었습니다.
$src_file = iconv("utf-8","CP949",$src_file);
위와 같이 설정시 파일 복사가 안되면 아래와 같이 적용
$src_file = iconv("utf-8","euc-kr",$src_file);
if ($file_change_hangul == 1) {
$src_file = iconv("UTF-8","CP949",$src_file);
} elseif ($file_change_hangul == 2) {
$src_file = iconv("UTF-8","EUC-KR",$src_file);
} elseif ($file_change_hangul == 3) {
$src_file = iconv("EUC-KR","UTF-8",$src_file);
} elseif ($file_change_hangul == 4) {
$src_file = iconv("ISO-8859-1","UTF-8",$src_file);
} elseif ($file_change_hangul == 5) {
$src_file = iconv("UTF-8","ISO-8859-1",$src_file);
}
참고자료
https://blog.naver.com/chunsj78/50111791242
https://m.blog.naver.com/cordba/91987108
iconv encoding ISO-8859-1
PHP 5.2.17 + glibc 1.14
iconv encoding ISO-8859-1
PHP 5.6.40 + glibc 2.12
iconv encoding no value
PHP 7.2.11 + glibc 1.14
iconv encoding no value
<?php
copy("원본파일경로", "복사될경로);
?>
를 이용해서 파일 복사 로직을 만들어서 실행하니 아래와 같이 오류가 뜹니다.
Warning: copy(/home/test/www/rgboard/data/qa/2217$2$복용후기실수.hwp) [function.copy]: failed to open stream: No such file or directory in /home/test/www/g5/convert/rgboard3_g5_board_update.php on line 347
/home/test/www/rgboard/data/qa/2448$1$SSL17080.JPG -> /home/test/www/g5/data/file/qa/rgboard_2448_1.JPG
/home/test/www/rgboard/data/qa/2708$1$메일로 온 광고.png -> /home/test/www/g5/data/file/qa/rgboard_2708_1.png
실행결과 한글이 아닌 파일은 복사가 되었지만, 한글이 포함된 파일은 복사가 되지 않았습니다.
한가지 특이한 것은 png 확장자의 경우는 warning 없이 복사가 안되더군요.
구글에서 여러가지 검색키워드를 조합하며 찾고 또 찾으니 아래의 링크를 발견했습니다.
php에서 move_uploaded_file 한글 안됨 https://blog.naver.com/chunsj78/50111791242
그래서 확인해보니, 아래와 같이 서버의 언어설정이 아래와 같이 표시가 되네요
<유형1>
array(3) { ["input_encoding"]=> string(10) "ISO-8859-1" ["output_encoding"]=> string(10) "ISO-8859-1" ["internal_encoding"]=> string(10) "ISO-8859-1" } ==>
<유형2>
array(3) { ["input_encoding"]=> string(5) "UTF-8" ["output_encoding"]=> string(5) "UTF-8" ["internal_encoding"]=> string(5) "UTF-8" } ==>
다른 서버에서는 테스트를 안해봐서 이것에 대한 것은 좀더 확인이 필요할 듯 합니다.
국내서버와 해외서버 또 다른 결과가 나올수 있을듯 합니다.
아래와 같이 파일을 iconv 해주니까 복사 안되던 것들이 정상적으로 복사가 되었습니다.
$src_file = iconv("utf-8","CP949",$src_file);
위와 같이 설정시 파일 복사가 안되면 아래와 같이 적용
$src_file = iconv("utf-8","euc-kr",$src_file);
if ($file_change_hangul == 1) {
$src_file = iconv("UTF-8","CP949",$src_file);
} elseif ($file_change_hangul == 2) {
$src_file = iconv("UTF-8","EUC-KR",$src_file);
} elseif ($file_change_hangul == 3) {
$src_file = iconv("EUC-KR","UTF-8",$src_file);
} elseif ($file_change_hangul == 4) {
$src_file = iconv("ISO-8859-1","UTF-8",$src_file);
} elseif ($file_change_hangul == 5) {
$src_file = iconv("UTF-8","ISO-8859-1",$src_file);
}
참고자료
https://blog.naver.com/chunsj78/50111791242
https://m.blog.naver.com/cordba/91987108
댓글목록
등록된 댓글이 없습니다.