wordpress遇到奇怪的问题:不能切换主题,不能再PHP上运行。


最近,心血来潮重新配置了一下服务器,从apache投怀送抱到nginx了。其实想了很久,现在因为经济问题,必须换了。换到便宜的主机上。本来想通过官方的迁移操作处理,想了想,反正都要重来,不如自己换,也没多少数据。于是开始了入坑的操作。

使用lnmp一键安装包配置好环境。

恢复wp程序,恢复wp数据库。然后我得到一个提示:您的 PHP 似乎没有安装运行 WordPress 所必需的 MySQL 扩展。我不相信竟然还有这种问题。我都通过phpmyadmin恢复了数据库了。我刷新了无数次,已然无法接受现实。

最后无奈,搜索,果然有人与我遇到相同问题,原因大概是:由于 PHP 7 只是在发布前将对 MySQL 扩展的支持移除掉了。我在phpinfo中查看也确实没有,只有mysqli。确实也该去掉了。有人的解决办法是自己编译安装mysql扩展。

我选择另一条让我悲催的道路。我的判断是,可能由于某些历史原因,我的wp程序自动更新的时候,还是保留了旧的接口,如果我下载最新版本,全新安装会不会摆脱这个问题呢?答案是肯定的。PHP7出来这么久了,wp这么流行的cms肯定早就支持了。只是不知道为什么升级过来的程序会有问题。

 

于是下载全新的wp安装,这回只填上数据库信息,下一步,提示我已经有数据了,不需要重新安装,只升级了数据库。看来很顺畅。接下来,我把旧版本中在用的插件和主题都复制到新版本中。然后登录后台。(现在这个流畅步骤也是我耗费了几个小时的血泪换来的ToT)。

我发现我原来用的模板不能使用了。而且有个奇怪的问题,无论我安装几个主题,后台界面似乎只显示当前主题,不能切换到其他主题。这是什么鬼?

毫无头绪,还得搜索啊。原来出于安全考虑,原来LNMP安装包默认关闭了scandir函数。所以说一键安装也是一把双刃剑,它既有方便的地方,也有令人畏惧的地方。于是修改文件/usr/local/php/etc/php.ini。找到这一行

disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

删除“scandir”保存。重启php-fpm服务。即可。

Archives