最稳方式是拖拽上传至网站根目录,需设www用户组及755/644权限;大文件须用SFTP+命令行解压;FTP需宝塔单独建用户并绑定目录;上传后必配伪静态、运行目录和open_basedir。

用宝塔面板上传网站源码,最稳的方式是直接拖拽到「网站根目录」
宝塔面板本身不提供“上传源码包→自动解压→部署”的一体化按钮,所谓“上传网站”本质就是把文件放进对应站点的根目录(比如 /www/wwwroot/your-site.com)。拖拽上传是默认开启、兼容性最好、成功率最高的方式,不需要额外配置 FTP 或改权限。
常见错误现象:403 Forbidden 或首页空白,往往是因为上传后文件所有者不是 www,或 index.php 等入口文件权限过高(如 777)反而被 Nginx 拒绝执行。
- 确保目标目录已存在,且在「网站」列表里已添加对应站点(否则拖拽无处可落)
- 上传前清空目标目录(尤其注意隐藏文件如
.user.ini、.htaccess可能残留旧规则) - 拖拽完成后,右键目录 → 「权限设置」→ 用户组选
www,勾选「递归设置文件夹和子文件」,权限数字填755(目录)和644(文件),别全设成 777
上传大文件(>100MB)时,必须关掉浏览器上传限制
宝塔默认用浏览器原生上传控件,Chrome/Firefox 对单文件有内存和超时限制,传几百 MB 的 WordPress 全量包或 Laravel vendor 压缩包大概率卡在 99% 或报错 Network Error。
这不是宝塔的问题,是浏览器行为。绕过它只有一条路:不用拖拽,改用命令行。
- 先用 SFTP(如 FileZilla)或
scp把压缩包传到服务器任意临时路径,例如/www/backup/site.zip - 进宝塔「终端」或 SSH 连入,执行:
cd /www/wwwroot/your-site.com && unzip -o /www/backup/site.zip
- 如果 zip 包里带父级目录(比如解出来是
myapp/xxx.php),加-j参数跳过目录结构:unzip -oj /www/backup/site.zip
- 解压完记得删掉临时 zip:
rm /www/backup/site.zip
用 FTP 上传时,账号密码和路径容易配错
宝塔内置的 Pure-FTPd 是独立服务,它的用户和系统用户无关,也不能用 root 登录。很多用户填了服务器 SSH 密码却连不上,就是因为 FTP 账号没在宝塔「FTP」页面单独创建。
使用场景:团队协作需多人上传、本地开发工具(如 VS Code 的 SFTP 插件)直连、或需要断点续传。
- 必须在宝塔「FTP」页面新建用户,绑定到具体站点根目录(不能选错成
/www/wwwroot根,否则一上传就覆盖所有网站) - FTP 地址填服务器 IP 或域名,端口默认
21,加密方式选FTP(非 FTPS 或 SFTP) - 登录后看到的路径就是你绑定的目录,无需再 cd 到
public_html或htdocs—— 宝塔没这些概念 - 上传后仍要手动修复权限,FTP 上传的文件默认属主是
www,但权限常为600,得进面板点「权限设置」统一改成644
上传后 PHP 网站打不开?重点查这三处
传完不等于跑起来。尤其是 ThinkPHP、Laravel、DedeCMS 这类依赖重写或特殊入口的程序,宝塔不会自动配伪静态,也不会改 open_basedir。
性能影响:开错一个配置可能让整个站点响应变慢,甚至触发 500 错误。
- 进「网站」→「设置」→「伪静态」,选对应框架模板(如 Laravel 选
laravel,WordPress 选wordpress),别留空 - 检查「网站目录」里的「运行目录」是否正确:ThinkPHP 通常要设成
/public,DedeCMS 要确保是/,否则index.php找不到 - 如果报
require(): open_basedir restriction in effect,进「PHP 设置」→「配置修改」,搜open_basedir,把网站根目录加进去,格式如:/www/wwwroot/your-site.com/:/tmp/:/proc/










