PHP에서 한자가 포함된 사진을 업로드할 때 오류가 발생하면 어떻게 해야 하나요?
PHP를 사용하여 파일을 업로드할 때 파일 이름에 중국어 문자가 포함되어 있으면 업로드가 실패할 수 있습니다. 이는 HTTP 프로토콜에서 파일 이름에 있는 한자를 인코딩해야 올바르게 전송되기 때문인데, PHP는 기본적으로 이 인코딩을 수행하지 않아 업로드가 실패하게 됩니다.
이제 이 문제를 해결하는 방법에 대해 논의해 보겠습니다.
문제 증상
PHP를 사용하여 파일을 업로드할 때 업로드된 파일 이름에 중국어 문자가 포함되어 있으면 업로드 시 오류가 보고될 수 있습니다. 오류 메시지는 일반적으로 이해할 수 없는 왜곡된 문자이므로 오류의 원인은 알 수 없습니다. 분명히 지적했습니다.
예를 들어 "Test Image.jpg"라는 파일을 업로드하려고 할 때, 업로드 과정에서 파일 이름에 "Test Image(중국어).jpg"와 같은 중국어 문자가 포함되어 있으면 업로드가 실패하고 오류가 발생할 수 있습니다.
Warning: move_uploaded_file(): Unable to move '/tmp/php12efan' to '/var/www/html/upload/测试图片(中文).jpg'
오류 메시지의 파일명이 깨져서 오류의 원인을 명확히 알 수 없는 것을 볼 수 있습니다.
문제의 원인
이 문제의 원인은 HTTP 프로토콜에서 한자를 인코딩해야 올바르게 전송되기 때문입니다. PHP를 사용하여 파일을 업로드하는 경우, PHP는 기본적으로 업로드된 파일 이름을 ISO-8859-1 인코딩 형식으로 변환하며, ISO-8859-1 인코딩에는 중국어가 포함되지 않으므로 문자가 깨져 표시됩니다.
업로드된 HTTP 요청을 보면 업로드된 파일 이름이 다음과 같은 것을 알 수 있습니다.
Content-Disposition: form-data; name="file"; filename="测试图片(中文).jpg"
업로드된 파일 이름은 어떠한 방식으로도 인코딩되지 않은 것을 알 수 있습니다.
Solution
이 문제를 해결하는 방법에는 여러 가지가 있습니다. 여기서는 두 가지 일반적인 솔루션을 제공합니다.
옵션 1: 수동 인코딩 변환
업로드된 파일 이름의 인코딩을 수동으로 변환하여 올바른 파일 이름을 얻을 수 있습니다. 구체적인 작업은 다음과 같습니다.
$file = $_FILES['file']; $filename = iconv('UTF-8', 'ISO-8859-1', $file['name']); move_uploaded_file($file['tmp_name'], '/var/www/html/upload/' . $filename);
위 코드에서는 iconv
함수를 사용하여 파일 이름을 UTF-8 인코딩에서 ISO-8859-1 인코딩으로 변환하고 올바른 파일 이름을 얻습니다. 을 선택한 다음 파일 업로드를 수행합니다. 이 방법의 단점은 상대적으로 번거롭고 수동 인코딩 변환이 필요하다는 점이며, 이는 충분히 편리하지 않습니다. iconv
函数将文件名从UTF-8编码转换为ISO-8859-1编码,得到了正确的文件名,然后再进行文件上传。这种方法的缺点是比较繁琐,需要手动进行编码转换,不够方便。
方案二:修改PHP配置文件
我们可以修改PHP配置文件,让PHP自动进行编码转换,从而避免了手动编码转换的过程。具体操作如下:
- 找到php.ini配置文件,位置可能会因不同系统而有所不同。
-
打开php.ini文件,找到以下两行:
; Default charset for auto content type. ; http://php.net/default-charset default_charset = "UTF-8"
로그인 후 복사 -
在
; Default charset for auto content type.
这一行的后面添加以下内容:; Add charset=utf-8 to Content-Type header for files with non-ASCII names ; that have been encoded using RFC 2231 suhosin.upload.unicode.semantics=1
로그인 후 복사 - 保存php.ini文件,重启Web服务器。
通过以上操作,我们就成功修改了PHP的配置文件,让PHP自动进行编码转换,解决了上传带中文的图片报错的问题。这种方法比较方便,但是需要注意的是,在使用此方法之前,需要确保服务器上已经安装了Suhosin
- php.ini 구성 파일을 찾으세요. 위치는 시스템에 따라 다를 수 있습니다.
- php.ini 파일을 열고 다음 두 줄을 찾으세요: 🎜rrreee
- 🎜
줄 뒤에 추가하세요; 자동 콘텐츠 유형에 대한 기본 문자 집합.
다음 내용: 🎜rrreee - php.ini 파일을 저장하고 웹 서버를 다시 시작합니다.
수호신
확장 프로그램이 설치되어 있는지 확인해야 한다는 점에 유의하세요. 🎜🎜요약🎜🎜PHP를 사용하여 파일을 업로드할 때 업로드된 파일 이름에 중국어 문자가 포함되어 있으면 업로드에 실패할 수 있습니다. 이 문제를 해결하려면 인코딩 변환을 수동으로 수행하거나, PHP 구성 파일을 수정하여 PHP가 자동으로 인코딩 변환을 수행하도록 할 수 있습니다. 두 방법 모두 장단점이 있으며, 해결 방법에 따라 적절한 방법을 선택할 수 있습니다. 실제 상황. 🎜위 내용은 PHP에서 한자가 포함된 사진을 업로드할 때 오류가 발생하면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8의 JIT 컴파일은 자주 실행되는 코드를 컴퓨터 코드로 컴파일하여 성능을 향상시켜 계산이 많은 응용 프로그램에 도움이되고 실행 시간을 줄입니다.

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

이 기사는 PHP의 대칭 및 비대칭 암호화에 대해 논의하여 적합성, 성능 및 보안 차이를 비교합니다. 대칭 암호화는 더 빠르고 벌크 데이터에 적합하지만 안전한 키 교환에는 비대칭이 사용됩니다.

이 기사에서는 PHP에서 강력한 인증 및 승인을 구현하여 무단 액세스를 방지하고 모범 사례를 자세히 설명하고 보안 향상 도구를 권장합니다.

이 기사는 CSRF 토큰, 동일한 사이트 쿠키 및 적절한 세션 관리를 포함하여 PHP의 CSRF 공격을 방지하는 전략에 대해 설명합니다.

기사는 PHP, 커버 단계, 보안 측정, 최적화 기술 및 Solutions의 일반적인 오류를 사용하여 데이터베이스에서 데이터 검색에 대해 논의합니다. 문자 수 : 159

PHP의 준비된 진술은 컴파일 및 재사용을 통해 SQL 주입을 방지하고 쿼리 성능을 향상시켜 데이터베이스 보안 및 효율성을 향상시킵니다. 문자 수 : 159
