将本地开发完成的PHP源码部署到远程服务器,FTP是最直接且兼容性最好的方式。无论你用的是虚拟主机还是云服务器,只要服务商开放了FTP账号,就能通过客户端把代码传上去并让Web服务解析执行。

一、准备工作与FTP账号获取
在动手上传之前,必须先拿到服务器的FTP接入信息。通常虚拟主机面板或云厂商控制台都会提供FTP账号、密码、主机地址以及端口。如果是自建服务器,则需要先安装如vsftpd这样的服务并创建系统用户。
建议把这些信息记录在一个纯文本文件中,避免每次连接都去翻后台。同时注意,部分服务商为了安全,FTP端口并非默认的21,而是随机高位端口,填写错误会一直连不上。下面是一段在Ubuntu上快速安装并启动vsftpd的示例:
# 安装vsftpd sudo apt update sudo apt install vsftpd -y # 启动并设置开机自启 sudo systemctl start vsftpd sudo systemctl enable vsftpd # 创建一个专门用于上传php源码的用户 sudo useradd -m -s /bin/bash phpupload sudo passwd phpupload
创建好用户之后,还要确认该用户对Web根目录有写入权限。很多新手卡在上传失败,其实不是网络问题,而是目录归属不对。可以通过chown把网站目录交给这个用户,或者用用户组方式授权。
二、选择FTP客户端与连接模式
桌面端常用的FTP客户端有FileZilla、WinSCP、Cyberduck等。它们都支持图形化拖拽,对新手友好。连接时一般会让你选主动模式(PORT)还是被动模式(PASV),这在有防火墙的网络环境下区别很大。
主动模式是服务器主动连你的电脑,容易被本地防火墙拦截;被动模式则由你连服务器的随机高位端口,更适合现代网络。如果连接后列表刷不出来,优先在客户端设置里强制使用被动模式。以下为FileZilla站点管理器中的核心填写项说明:
- 主机:填写服务商给的FTP地址,如 ftp.ipipp.com
- 端口:不填则默认21,特殊端口需明确写入
- 协议:选择FTP而非SFTP,除非你确认服务端开了SSH文件传输
- 登录类型:常规,填写用户和密码
- 传输设置:勾选被动模式
连接成功后,左侧是本地文件,右侧是服务器文件。找到Web根目录(常见为 /public_html 或 /var/www/html)再上传,不要直接丢在用户主目录,否则浏览器访问不到。
三、上传PHP源码的正确步骤
不要选中整个项目文件夹直接拖,而是先进入本地项目目录,把内部文件和子目录一并选中再传。这样可以保持服务器上的相对路径一致,避免多嵌套一层文件夹导致 require 引用失败。
上传过程中注意文件编码。Windows记事本保存的UTF-8可能带BOM头,会让PHP在页面顶部输出乱码或引发header已发送错误。推荐用VS Code或PHPStorm等编辑器,并设为无BOM的UTF-8。以下是一段典型的PHP入口文件,上传前应确认其编码干净:
<?php // 简单的入口,确认上传后能否解析 require_once __DIR__ . '/config/app.php'; $app = new AppCoreApplication(); $app->run();
如果项目包含 .env、.gitignore 等隐藏文件,普通拖拽可能漏掉。在FileZilla中需开启显示隐藏文件,并手动勾选传输。漏传环境配置是线上报错的常见原因,表现为数据库连接失败或密钥未定义。
四、上传后的权限与访问验证
FTP传完的文件权限常常是644,目录是755,这一般够用。但若是PHP需要写日志或上传图片,对应目录要放开组写权限,否则会报 permission denied。可用SSH登录后批量处理:
# 把上传目录设为www-data组可写 sudo chown -R phpupload:www-data /var/www/html sudo chmod -R 755 /var/www/html sudo chmod -R 775 /var/www/html/storage
权限设好之后,在浏览器访问对应域名或IP,看是否出现预期页面。若看到源码被直接下载而不是解析,说明服务器没装PHP模块或Web服务未关联。此时要检查Apache的php模块或PHP-FPM配置,而不是重新传文件。
最后建议做一次完整性校验:对比本地与服务器文件数量和大小,防止传输中断导致部分类文件缺失。这样一个干净的PHP源码上传流程就完成了,后续更新代码也按同样方式覆盖即可。
五、常见误区与避坑总结
第一个误区是认为SFTP和FTP是一回事。SFTP走SSH协议,端口22,安全性更高但部分廉价虚拟主机不支持;FTP明文传输密码,建议在可信网络或使用FTPS。第二个误区是用中文命名PHP文件,服务器文件系统编码不一致时会404,尽量全英文小写加下划线。
第三个误区是上传后不清缓存。若用了OPcache,旧代码可能一直生效,需要重启PHP服务或触发缓存失效。把这些细节记住,FTP上传PHP源码就是一件可控且重复性强的基础运维操作。