admin 管理员组

文章数量: 1086019


2024年6月7日发(作者:计算机二级c++考试内容)

linux ftp服务器上传文件夹时提示550错误问题解决方法 标签: linux ftp服务器 550

中文文件夹上传错误 问题 分类: 计算机 2010-11-06 22:47

前几天在实验室搭配了一个linux环境下的vsftp服务器,配置好服务器运行后,客户

端老是提示错误550,折磨了好几天,在网上查看了很多文章都没有解决,最后安装了一个

pureftp服务器,也是提示错误,且错误代码为550,今天终于解决了这个问题,写下这篇日

志,以供碰到同样问题的人参考。

环境:linux redhat9.0,vsftp,pureftp.

症状:匿名上传单个文件成功,上传英文名的文件夹也是成功的,但是上传中文名的文

件夹时就提示错误,错误代码:550, 在vsftp服务器中提示:550,无法更换到目录;pureftp

服务器中提示无法找到目录,而且目录中的中文部分是????,但是都能上传文件和下载文件。

另外在linux下查看上传的文件时发现中文名字全是乱码。

分析原因:

经过测试和试验,分析得出出现上述症状的原因是linux系统不支持中文编码所致,当

有中文出现时,服务器不认识中文因而就以乱码出现,并提示文件目录不存在或不能进入等

错误提示。

解决办法:

1、解决显示中文的问题。

更改/etc/sysconfig/i18n 文件的内容:将文件中的变量值更改如下:

LC_CTYPE="zh_18030"

重启电脑或相关服务。

本机i18n文件的配置如下:

LANG="en_-8"

SUPPORTED="zh_18030:zh_CN:zh:en_-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

LC_CTYPE="zh_18030"

详细原因请看文章:[转载] Linux中LANG,LC_ALL,local详解

2、屏蔽原代码中提示错误的对话框

按照步骤1的方法更新语言环境后,能显示中文和写入中方,但是本人发现语言编码还

是和windows的有区别,不能彻底解决语言编码的问题,期待高手解决。但本人利用另外

一种方法就是屏蔽掉因为不支持中文编码原因造成的错误提示,即550 failed to change

directory,方法如下:

解压缩安装文件,本人用的pureftp的下载地址为

/download/0001000/

打开解压缩后的文件夹中的src文件夹,对ftpd.c文件进行编辑,将第1937行开始的三

行代码注释掉,注释后的样式如下:

// if (SNCHECK(snprintf(buffer, sizeof buffer,

// MSG_CANT_CHANGE_DIR ": %s",

// dir, strerror(errno)), sizeof buffer)) {

_EXIT(EXIT_FAILURE);

// }

logfile(LOG_INFO, "%s", buffer);

addreply(550, "%s", buffer);

保存后再按照安装说明进行安装即可。

经过测试,没有任何问题。当然vsftpd的源码说不定也可以像这样进行更改从而解决语

言编码的问题。


本文标签: 提示 问题 错误 文件 解决