宝塔面板需手动处理路径、权限和数据库三件事才能上线网站:打包时只选根目录文件(勿含外层文件夹),用.zip格式;上传前进入站点根目录再解压;解压后执行chown -r www:www授权,通过phpmyadmin导入utf8mb4字符集数据库,并配置对应伪静态规则。

宝塔面板不支持“一键上传解压即上线”,必须手动处理路径、权限和数据库三件事,否则网站大概率打不开。
怎么打包本地网站才不会在宝塔里出错
本地开发环境(比如 XAMPP/MAMP)的目录结构和宝塔默认的 /www/wwwroot/ 不一致,直接拖整个 htdocs 文件夹进去会多一层嵌套,导致 PHP 找不到入口文件。
- 只打包网站根目录下的实际文件(
index.php、wp-content、public等),不要包含外层文件夹(如不要打包myproject/htdocs/,而要进到htdocs/里选中内容再压缩) - 压缩格式用
.zip(宝塔 Web 端解压最稳定),避免.tar.gz或分卷压缩 - 确认本地
config.php、.env、wp-config.php等配置文件里的数据库地址、用户名、密码已改为服务器对应值(或先留空,上传后再改)
上传后解压路径必须严格匹配站点根目录
宝塔「文件」页面上传 ZIP 后,点击解压,默认会解到当前目录。如果误传到 /www/wwwroot/ 根下再解压,且压缩包里带父级文件夹(如 my-site/),就会生成 /www/wwwroot/my-site/ —— 但你绑定的域名指向的是 /www/wwwroot/xxx.com,结果 403 或 404。
- 先在宝塔「网站」列表找到目标站点,点击「根目录」右侧的文件夹图标,直接进入该站点的根目录(路径类似
/www/wwwroot/xxx.com) - 在此页面内点击「上传」,选中 ZIP 文件,上传完成立刻点「解压」——这样解压出来的文件就在
/www/wwwroot/xxx.com/下,无需移动 - 解压后检查是否多出一层文件夹:如果看到
/www/wwwroot/xxx.com/my-site/,说明打包错了,删掉整个my-site目录,重新按上一条打包再传
解压完还不能访问?重点查这三处
静态文件能打开,但 PHP 报错、后台登录失败、图片不显示……大概率是权限、数据库或伪静态没跟上。
- 执行
chown -R www:www /www/wwwroot/xxx.com(在宝塔终端里运行),尤其注意runtime、storage、wp-content这类可写目录必须属组为www - 数据库导入必须用宝塔「数据库」→「phpMyAdmin」,不能只复制 SQL 文件放根目录;导入前确认数据库名、用户名已在宝塔创建,并在网站配置文件中写对
- Laravel/ThinkPHP/WordPress 等需要伪静态:进站点设置 → 「伪静态」选项卡 → 选择对应规则(如 WordPress 选
wordpress),保存后重启 Nginx/Apache
最常被跳过的其实是数据库字符集和时区——本地导出 SQL 时若没勾选 SET NAMES utf8mb4,又没在宝塔新建数据库时指定 utf8mb4_unicode_ci,中文就会变问号;时区不一致会导致 Laravel 的 Carbon::now() 比服务器时间慢 8 小时,这类问题不会报错,但业务逻辑会悄悄出错。










