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をどのように使用していますか?
ここでは、次の2つに注意を払う必要があります。
- FTPサーバー
FTP サーバーはユーザーが操作します。実行時に環境変数に LANG=en_US.utf8 または LANG=he_IL.utf8 が定義されていることを確認する必要があります。
実行して確認できます。
grep -aPo 'LANG=[^=]+' /proc/{pid}/environ
ここで{pid}はFTPサーバーのプロセスIDです(おそらくこのコマンドを実行するrootユーザーです)。
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をサポートしていれば、正常に動作する可能性が高くなります。