网站从旧服务器搬到新服务器,PHPCMS打不开,页面提示数据库连接失败,或者白屏只剩一句“Can not connect to MySQL server”,大概率是caches/configs/database.php里的连接信息还指着旧库。PHPCMS V9搬家后要改的数据库配置就集中在这个文件,不用去根目录翻config.php,那个文件通常只管系统入口,数据库账号密码不在里面。
先找到caches/configs/database.php。用宝塔文件管理、FTP或者SSH都行。改之前把原文件复制一份,命名database.php.bak,改坏了能马上还原。打开后看到类似这样的数组:
return array (
''default'' => array (
''hostname'' => ''localhost'',
''database'' => ''old_db'',
''username'' => ''old_user'',
''password'' => ''old_pass'',
''tablepre'' => ''v9_'',
''charset'' => ''utf8'',
''type'' => ''mysqli'',
...
)
);
要改的是hostname、database、username、password,表前缀tablepre一般不动。hostname填新数据库地址,网站和数据库在同一台服务器就写localhost,数据库单独一台就写内网IP,别写外网IP绕一圈,慢还容易受防火墙影响。database填新库名,username和password填新库账号密码。如果新库导入时表前缀还是v9_,tablepre保持v9_;如果导入时改过前缀,这里必须同步改,否则后台能连上库却提示表不存在。
type这个字段要注意。老版本PHPCMS默认写mysql,新服务器如果跑PHP7.0以上,mysql扩展已经没了,要改成mysqli,不然会报连接函数不存在。改完保存,别急着刷新页面,先把caches目录下除configs以外的缓存清一遍。caches/configs里放的是配置文件,不能删;caches/caches_template、caches/caches_common、caches/caches_model这些文件夹里的内容可以清空。进不了后台就手动删,能进后台就在后台更新缓存。如果服务器开了opcache,改完database.php后重启一下PHP-FPM,让新文件立即生效。
数据库配置文件改对后,很多搬家问题还会卡在站点域名上。PHPCMS的站点地址不在database.php里,在caches/configs/system.php,找到siteurl,改成新域名,带http://或https://。不改的话后台登录可能跳回旧域名,附件地址、栏目页链接也会混着旧域名。这个文件里还有site_path,一般保持/不用动。改完system.php同样要清缓存。
几个容易踩的坑。新数据库账号权限没给够,比如只给了localhost,网站却用内网IP连,会提示Access denied;数据库端口不是3306,hostname要写成127.0.0.1:端口,部分PHPCMS版本支持这种写法,不确定就先保持默认端口,通过SSH隧道或改数据库端口解决;密码里有单引号、反斜杠,要用单引号包好并转义,否则PHP数组解析出错,页面直接白屏;搬家后data目录、caches目录权限不对,数据库连上了也写不了缓存,Linux下给www用户读写权限,一般755目录、644文件,具体看服务器运行用户。改完访问首页,能正常打开、后台能登录、发布文章附件路径正常,基本就稳了。要是还报数据库错误,把database.php里的debug临时改成true,刷新看具体报错,排查完再改回false。
