刚搭好服务器,满心欢喜把本地做好的网站包传上去。结果一刷新,白屏,或者干脆就是那个让人头大的403 Forbidden。再打开FTP一看,好家伙,上传目录里干干净净,连个影子都没有。
这感觉,就像是你满怀诚意送出的礼物,被对方原封不动退了回来,还附带一句冷冰冰的“拒收”。
我干这行这么多年,见过太多新手在这上面栽跟头。不是代码写错了,也不是服务器崩了,纯粹是FTP上传这个环节出了岔子。今天不扯那些虚头巴脑的理论,就聊聊怎么把这个“空目录”的坑填上。
先说个最常见的场景。
你用的是FileZilla,或者别的什么客户端。连接成功,绿色对勾亮着,看着挺稳。然后你拖拽文件,进度条跑得飞快,心里正美呢。切回服务器后台一看,目录是空的。
这时候很多人第一反应是:网断了?还是权限不够?
其实大概率是,你只上传了文件,没上传文件夹结构,或者更扎心的是——你根本没上传成功,只是客户端显示成功,实际上因为权限问题被静默拒绝了。
我有个客户,之前找外包做的站。上线那天,对方说没问题。结果上线后,首页能打开,但点击任何子页面,全是404。排查半天,发现根目录下只有index.html,其他文件夹全是空的。
为什么?因为FTP上传时,那个外包人员可能只勾选了“上传文件”,漏选了“上传目录”或者“递归上传”。
这就导致了一个很尴尬的局面:网站建设ftp上传是空目录。
听起来很荒谬,对吧?但这就是现实。
再说说权限问题。这是重灾区。
很多新手不懂Linux的权限逻辑。你以为你登录了root账号,或者你以为你有了读写权限,就能随便传文件。
大错特错。
FTP协议本身比较古老,它不像SFTP那样安全且功能全面。在FTP模式下,如果目标文件夹的权限是755,而你上传的文件试图覆盖或创建新文件,但所属用户不匹配,很多时候服务器会直接拒绝,而且不报错,或者报错信息晦涩难懂。
我见过最离谱的一次,是一个WordPress站点。上传主题时,一直提示失败。折腾了一晚上,最后发现是父目录的权限是777,但子目录是755,而且所有者是www-data,而FTP登录用户是ftpuser。
这种权限隔离,导致ftpuser只能读,不能写。
所以,网站建设ftp上传是空目录,很多时候不是软件的问题,是服务器配置和FTP客户端设置不匹配。
怎么解决?
第一,检查FTP客户端设置。
在FileZilla里,去“编辑”->“设置”->“传输”。看看“文件存在时”是怎么设置的。如果是“跳过”,那你重复上传同名文件,它根本不动。改成“覆盖”或者“询问”。
还有,确保勾选了“使用被动模式”。很多云服务器默认开启了防火墙,被动模式能绕过一些端口限制。
第二,检查目录权限。
登录SSH,用ls -la命令看看目录权限。
如果是755,尝试改成775,或者777(临时测试用,上线前务必改回755)。
确保FTP用户有写入权限。如果不确定,可以直接chown -R ftpuser:ftpuser /var/www/html。当然,这招有点暴力,适合小白快速排查。
第三,分段上传,别贪快。
有时候,文件太大,或者文件太多,FTP连接不稳定,会导致上传中断。
别一次性拖几百个文件。先传一个文件夹,看看服务器里有没有。如果有,再传下一个。
这样能精准定位是哪个文件或者哪个文件夹出了问题。
我上次帮一个朋友修站,就是因为他一次性拖了上千个图片,结果中间卡了一下,后面全没传上去。服务器那边显示上传成功,其实只是部分成功。
这种半吊子的上传,最容易导致网站建设ftp上传是空目录的假象。
最后,别忽视日志。
如果以上都试了,还是不行。去服务器日志里看看。
/var/log/syslog 或者 /var/log/vsftpd.log。
看看有没有Permission denied的字样。
如果有,那就是权限问题。如果没有,可能是FTP客户端的问题,换个客户端试试,比如用WinSCP,或者直接用浏览器上传(如果服务器支持的话)。
这事儿吧,看着简单,坑真不少。
别急着骂服务器,先看看自己是不是漏了什么小细节。
毕竟,网站建设ftp上传是空目录,往往是因为我们太急于求成,忽略了最基础的步骤。
慢慢来,比较快。
希望这点经验,能帮你省下几个不眠之夜。