PHP迁移服务器就三步备份网站文件、导出数据库、修改配置文件指向新环境,顺序对了,网站就能平滑切换。
搬家这件事,PHP网站和普通文件不太一样,它不是一个压缩包丢过去就能跑,因为数据库、运行环境、伪静态规则都会影响最终结果,下面按实际操作流程拆开讲。
php网站迁移服务器完整教程:先搞清要搬哪些东西
迁移前先把要搬的对象列清楚,一个典型PHP站点通常包含四部分:
- 网站根目录文件:包括PHP源码、图片、上传附件、静态CSS和JS。
- 数据库:MySQL是PHP网站的标配,多数动态内容都存在这里。
- 运行环境:PHP版本、扩展模块、Nginx或Apache配置、伪静态规则。
- 域名与证书:DNS解析、SSL证书、CDN配置。
很多人只打包网站文件,结果新服务器上数据库连不上,这就是漏掉了第二项,行业共识认为,迁移PHP网站最容易被忽略的是环境版本差异,而不是文件本身。
php项目迁移到新服务器需要注意什么
迁移前先确认下面几个点,能避免一半以上的翻车情况:
- PHP版本是否一致:老项目多跑在PHP 5.6或7.4,新服务器默认可能是PHP 8.2,版本不匹配会出现语法报错或白屏。
- 数据库版本和字符集:MySQL 5.7导出的数据导入到MySQL 8.0一般没问题,但反过来不行,字符集建议保持utf8mb4。
- 伪静态规则:Apache用
.htaccess,Nginx要写在站点配置里,规则不迁移,文章页和列表页会404。 - 绝对路径:部分老程序把网站根路径写死在配置里,比如
/home/wwwroot/old.com,迁移后要改成新路径。 - 扩展依赖:如
php-curl、php-gd、php-mbstring、php-redis,缺少会导致后台功能异常。
文件与数据库打包:两种主流操作路线
迁移操作分两种情况:有宝塔面板的环境和纯命令行环境,两种路线都能完成,只是顺手程度不同。
宝塔面板打包导出
适合不熟悉Linux命令的站长,步骤非常直观:
- 登录旧服务器宝塔面板。
- 进入“网站”列表,点击目标站点根目录,压缩整个目录为
zip或tar.gz。
- 进入“数据库”页面,点击对应数据库的“备份”,导出为
.sql.gz。 - 下载这两个文件到本地,再上传到新服务器对应目录。
- 新服务器宝塔面板中创建站点和数据库,导入文件和数据库。
命令行打包迁移
适合有SSH权限的场景,效率更高,常用命令如下:
# 打包网站根目录 cd /www/wwwroot tar -czf myphp_site.tar.gz myphp_site # 导出数据库 mysqldump -u dbuser -p dbname > db_backup.sql
上传到新服务器:
scp myphp_site.tar.gz root@新服务器IP:/var/www/ scp db_backup.sql root@新服务器IP:/root/
登录新服务器后解压并导入:
cd /var/www tar -xzf myphp_site.tar.gz mysql -u dbuser -p dbname < /root/db_backup.sql
注意:新服务器上的数据库名、用户名、密码需要先创建好。
两种方式对比
| 维度 | 宝塔面板迁移 | 命令行迁移 |
|---|---|---|
| 上手难度 | 低,点鼠标 | 中,需要基础命令 |
| 迁移速度 | 受下载上传带宽影响 | SCP直传更快 |
| 出错排查 | 面板日志直观 | 依赖命令排查 |
| 适合人群 | 个人站长、初学者 | 运维、开发者 |
php程序迁移到云服务器步骤拆解
云服务器迁移和虚拟主机迁移逻辑相同,但云服务器多了环境配置这一步,下面是完整环节。
新服务器环境准备
在云服务器上安装运行环境,以常见的LNMP为例:
# 更新软件源后安装Nginx、MySQL、PHP apt update apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring
如果使用宝塔面板,直接安装LNMP套件,选择与旧服务器相同的PHP版本。
上传文件并解压
使用SCP或宝塔文件上传,将打包文件放到新服务器的目标目录,然后解压。
导入数据库并修改配置
数据库导入后,必须修改PHP程序的数据库连接信息,不同程序的配置文件位置不同:
- WordPress:根目录
wp-config.php - ThinkPHP:
application/database.php或.env
- Laravel:根目录
.env - 帝国CMS:
e/class/config.php
修改点通常包含:数据库主机、数据库名、用户名、密码,如果数据库和网站在同一台服务器,主机填localhost或0.0.1。
调整目录权限
云服务器通常使用www或www-data用户运行PHP,解压后的文件所有者可能是root,需要改回:
chown -R www:www /var/www/myphp_site
find /var/www/myphp_site -type d -exec chmod 755 {} ;
find /var/www/myphp_site -type f -exec chmod 644 {} ;
部分需要写入的目录如runtime、uploads、cache权限可设为775。
配置Nginx站点和伪静态
新建Nginx站点配置文件,指向网站根目录,并配置PHP转发,伪静态规则从旧服务器复制过来,不要照搬宝塔的默认写法。
nginx -t systemctl reload nginx
切换域名解析
等待配置完成且本地测试通过后,到域名管理后台把A记录指向新服务器IP,解析生效时间多数情况下在几分钟到几小时之间,取决于TTL设置。
php网站搬家后打不开怎么排查?常见原因清单
迁移完成后出现白屏、500错误或数据库连接失败,按下面顺序查。
数据库连接失败
浏览器页面显示“Access denied for user”或“Connection refused”,先检查配置文件里的数据库账号密码是否和新服务器实际创建的一致,再确认数据库用户是否有远程或本地访问权限。
500错误或白屏
500属于服务器内部错误,需要看日志定位:
tail -f /var/log/nginx/error.log
如果是PHP错误,查看PHP-FPM日志:
tail -f /var/log/php-fpm/error.log
多数情况是PHP版本太低导致语法不兼容,或者缺少某个扩展。
文章页404
首页能打开,内页全部404,基本是伪静态规则没有生效,Nginx站点配置里需要加上对应规则,并重启Nginx。
权限不足导致上传失败
后台无法上传图片,检查uploads目录是否可写,Linux下权限设置不正确是常见原因。
域名解析未生效
部分用户改完IP后立刻访问,结果还是旧站,这属于本地DNS缓存,可以换网络或清空本地DNS缓存后再试。
php网站迁移服务器大概多少钱与方式选择
很多人问php网站迁移服务器大概多少钱,手动迁移几乎不产生软件费用,成本主要是时间和带宽,如果自己会操作,花费为零;如果找人代迁移,市场报价差异较大,多数情况下按数据体积、站点数量和是否包含环境排错来计费,涉及大型数据库或复杂集群时,报价会明显上升。
国内服务器迁移php网站时,备案问题不用重新走全流程,域名已经备案的,只需要修改解析到新IP,并在新服务器接入商处完成备案接入,未备案域名则无法使用国内服务器,这个硬性限制要注意。
迁移方式怎么选
- 个人博客、企业展示站:宝塔面板迁移足够,操作最短。
- 多站点、大流量站:命令行打包加SCP直传,避免本地中转。
- 完全动不了手:找付费迁移服务,需求表达清楚后让对方给报价。
收尾:迁移完成后做三件事
迁移上线后别急着收工,先做验证:
- 前台首页、列表页、详情页各打开一次,检查是否报错。
- 后台登录测试,提交一条测试数据看数据库写入是否正常。
- 检查SSL证书是否自动续期,旧服务器上的定时备份任务是否已关闭。
把旧服务器保留3天以上,确认新环境完全稳定后再下架,是相对稳妥的做法。
Q&A:php怎么转移到另一个服务器常见问题
php网站迁移服务器后数据库一直连接失败怎么办?
先确认新服务器上数据库服务是否启动,再核对配置文件里的主机名、用户名、密码,数据库导入时注意选择与旧库一致的字符集,如果旧服务器数据库有远程连接限制,迁移后需要重新授权本地访问。
php版本不一致会导致网站迁移失败吗?
会,PHP版本差异较大时,老程序可能出现语法不兼容或函数已废弃的问题,迁移前先确认旧服务器PHP版本,在新服务器上尽量安装相同或相近版本,迁移后再逐步升级并测试,是一次比较安全的做法。
国内服务器迁移php网站需要重新备案吗?
不需要重新备案,已经通过备案的域名,更换服务器后只需在新接入商处提交备案接入申请,域名解析修改后,新服务器即可正常使用,未备案域名无法使用国内服务器资源。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/654766.html





