CentOS 7이 설치된 VPS가 있습니다. 히브리어 이름을 가진 파일을 서버에 업로드하려고 합니다. FTP(Pure-ftpd)를 통해 업로드하려고 하면 다음과 같은 결과가 나타납니다 Failed to convert command to 8 bit charset
. php-upload-page를 통해 업로드를 시도했는데 이름 없이 파일을 전송합니다(예: 파일 이름이 이면 שלום.jpg
서버에 로 저장됩니다 . 로케일 을 .jpg
로 변경해 보았지만 여전히 그렇지 않습니다. 일하다 .en_US.utf8
he_IL.utf8
무엇을 해야할지 아는 사람 있나요?
편집하다: 문제는 FTP 서버(Pure-ftpd)에 있습니다. ProFtp를 제거하고 ProFtp를 설치했는데 이제 제대로 작동합니다.
답변1
en_US.utf8/he_IL.utf8을 어떻게 사용하고 있나요?
여기서 다음 두 가지에 주의를 기울여야 합니다.
- FTP 서버
FTP 서버는 사용자가 운영합니다. 런타임 시 환경 변수에 LANG=en_US.utf8 또는 LANG=he_IL.utf8이 정의되어 있는지 확인해야 합니다.
실행하여 확인할 수 있습니다.
grep -aPo 'LANG=[^=]+' /proc/{pid}/environ
여기서 {pid}는 FTP 서버의 프로세스 ID입니다(아마도 이 명령을 실행하는 루트 사용자일 것입니다).
Linux에서는 일반적으로 I18n을 지원하기 위해 실행 파일의 컨텍스트에서 이 변수를 정의해야 합니다.
올바르게 정의되지 않은 경우 몇 가지 옵션이 있습니다.
ㅏ. 이 FTP 서버에 할당된 사용자의 .bashrc를 수정합니다.
export LANG=en_US.utf8
그리고 시스템을 다시 시작하세요.
b. 더 직접적으로는 이 환경 변수 정의를 FTP 서버의 시작 스크립트에 직접 추가합니다.
export LANG=en_US.utf8
- FTP 클라이언트
또한 FTP 클라이언트는 이름이 올바르게 인코딩되도록 파일을 업로드할 때 이 LANG 환경 변수를 올바르게 설정해야 합니다.
다음을 실행하면 됩니다.
export LANG=en_US.utf8
예를 들어 명령줄을 통해 FTP 클라이언트를 호출하기 전입니다.
클라이언트와 서버가 모두 위와 같이 올바르게 구성되어 있고 사용 중인 응용 프로그램(귀하의 경우 FTP 서버와 클라이언트)이 I18n을 지원한다면 제대로 작동할 가능성이 높습니다.