最新消息:20210917 已从crifan.com换到crifan.org

【已解决】WordPress网站搬家后页面显示但不显示内容

WordPress crifan 3476浏览 0评论

折腾:

【记录】crifan.org的WordPress网站从Linode搬家到腾讯云香港服务器

期间,网站从Linode搬家到腾讯云香港后,此处WordPress网站的页面能显示,但是内容完全是空的:

https://www.crifan.org

-》猜测是缓存的问题?

去清除Chrome浏览器缓存试试:

去试试能否登录后台:

https://www.crifan.org/wp-admin

是可以的:

那就去清除缓存

WP Super Cache ‹ 在路上 — WordPress

但是去访问单个页面还是空白:

https://www.crifan.org/use_online_website_build_self_logo/

去chrome中调试看看

500,内部错误

重启服务器试试

难道和php版本有关系?

-》也不对,否则后台也无法登录才对

重启后问题依旧。

看到chrome中错误是

<code>    1. Request URL: https://www.crifan.org/
    2. Request Method: GET
    3. Status Code: 500
    4. Remote Address: 150.109.113.228:443
    5. Referrer Policy: no-referrer-when-downgrade
1. Response Headers
    1. content-type: text/html; charset=UTF-8
    2. date: Sun, 30 Dec 2018 03:40:18 GMT
    3. link: &lt;https://www.crifan.org/wp-json/&gt;; rel="https://api.w.org/"
    4. server: nginx
    5. status: 500
    6. vary: Accept-Encoding, Cookie
</code>

看来是内部nginx配置有误

去看看内部配置

<code>[root@VM_0_11_centos ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@VM_0_11_centos ~]# cd /usr/local/nginx/conf/
[root@VM_0_11_centos conf]# ll
total 88
-rw-r--r-- 1 root root 1077 Dec 25 21:02 fastcgi.conf
...
-rw-r--r-- 1 root root 3610 Dec 25 21:02 win-utf
[root@VM_0_11_centos conf]# cd vhost/
[root@VM_0_11_centos vhost]# ll
total 4
-rw-r--r-- 1 root root 1530 Dec 30 11:17 www.crifan.org.conf
[root@VM_0_11_centos vhost]# cat www.crifan.org.conf
</code>

WordPress change host homepage blank

A Common way to fix the blank page in WordPress sites | InMotion Hosting

感觉更像是:WordPress的插件有问题?

去禁止掉插件试试

不过还是先去看看:

php的log

和WordPress的log

和nginx的log

看看

打开:

https://www.crifan.org/?p=62015

问题依旧。

看到会去访问:

https://www.crifan.org/wp-content/cache/autoptimize/css/autoptimize_9acb4c126143d615bce049e10e4b6846.css

倒是正常的。

先去停用:

Autoptimize

访问内容有变化:

-》很明显是去加载了原始的内容

但是本身

https://www.crifan.org/use_online_website_build_self_logo/

还是500

Moving WordPress « WordPress Codex

https://codex.wordpress.org/Moving_WordPress#If_you_forget_to_change_the_locations

感觉是:还是wp-config.php估计哪里配置有误?

后台中是可以正常获取post的内容的:

去停用:

Redis Object Cache

问题依旧。

看log:

<code>x.x.x.40 - - [30/Dec/2018:11:45:05 +0800] "GET /use_online_website_build_self_logo/ HTTP/2.0" 500 4946 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
</code>

好像都是强制指定Http 2.0?

去下载linode中nginx的配置去看看

对比对比

也才突然意识到:

<code>[root@crifan vhost]# pwd
/usr/local/nginx/conf/vhost
[root@crifan vhost]# ll
total 8
-rw-r--r-- 1 root root 2266 Dec  6  2017 book.crifan.org.conf
-rw-r--r-- 1 root root 2360 Sep  7  2017 www.crifan.org.conf
</code>

之前还有

book.crifan.org.conf

忘了下载下来呢

然后对比Linode的和Tencent的nginx的配置,发现貌似最大的怀疑对象是TLS v1.3

所以去修改配置试试

<code>ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
</code>

重新加载nginx配置:

<code>[root@VM_0_11_centos wwwlogs]# service nginx reload
Redirecting to /bin/systemctl reload nginx.service
</code>

看看是否有效,结果问题依旧。

https://codex.wordpress.org/Moving_WordPress

去修改Permalink试试

Nginx « WordPress Codex

https://codex.wordpress.org/Nginx

没用,访问:

https://www.crifan.org/?p=62015

还是跳转到:

https://www.crifan.org/use_online_website_build_self_logo/

WordPress get post 500

How to Fix the 500 Internal Server Error in WordPress (with Video)

看log问题依旧

https://www.wpbeginner.com/wp-tutorials/how-to-fix-the-internal-server-error-in-wordpress/

有说到PHP的memory limit,感觉不像

php – WordPress permalink change throws 500 Internal Server Error – Stack Overflow

难道是:.htaccess

把Default主页中index.html拷贝过来:

<code>[root@VM_0_11_centos www.crifan.org]# cp ../default/index.html .
[root@VM_0_11_centos www.crifan.org]# ll index.html
-rw-r--r-- 1 root root 18081 Dec 30 12:49 index.html
[root@VM_0_11_centos www.crifan.org]# pwd
/data/wwwroot/www.crifan.org
</code>

去访问:

https://www.crifan.org/index.html

是正常的 -》说明nginx的配置没有错

难道是 wp-config.php没有加上可执行权限吗?

去加上

<code>[root@VM_0_11_centos www.crifan.org]# chmod +x wp-config.php  
[root@VM_0_11_centos www.crifan.org]# ll -lha wp-config.php
-rwxr-xr-x 1 www www 3.6K Dec 26 23:03 wp-config.php
</code>

结果没用。

php – WordPress: 500 Internal Server Error, probable issue using $wpdb – Stack Overflow

去加上debug

然后发现是php代码兼容有问题的:

大前端的主题 和其他地方有问题:

【已解决】WordPress主题大前端PHP 7代码出错:Fatal error Uncaught Error Call to undefined function ereg_replace() in daqianduan-d8-jquiss header.php

但是menu等信息还是没显示出来-》所以还是要去消除掉 那些warning

先去看第一个:

<code>Notice: wp_deregister_script的调用方法不正确。脚本和样式应在wp_enqueue_scripts、admin_enqueue_scripts和login_enqueue_scripts钩子之后再加入加载队列(enqueue)或注册(register)。 请查阅调试WordPress来获取更多信息。 (这个消息是在3.3.0版本添加的。) in /data/wwwroot/www.crifan.org/wp-includes/functions.php on line 4204
</code>

wp-includes/functions.php Notice: wp_deregister_script的调用方法不正确 

WordPress  php7 wp-includes/functions.php Notice: wp_deregister_script的调用方法不正确

Topic: wp_enqueue_style was called incorrectly | WordPress.org

Topic: register_uninstall_hook was called incorrectly | WordPress.org

Topic: Longstanding Errors | WordPress.org

Topic: Deprecated functions | WordPress.org

感觉好像都只是notice,不严重

但是看到一个:

<code>in /data/wwwroot/www.crifan.org/wp-includes/functions.php on line 3959
Warning: preg_replace(): Unknown modifier ']' in /data/wwwroot/www.crifan.org/wp-content/themes/daqianduan-d8-jquiss/header.php on line 71
</code>

Warning: preg_replace(): Unknown modifier ] daqianduan-d8-jquiss/header.php

wordpress php7 Warning: preg_replace(): Unknown modifier ] daqianduan-d8-jquiss/header.php

Topic: Warning: preg_replace(): Unknown modifier ‘0’ in | WordPress.org

Topic: PHP 7+ (7.2) Compatability | WordPress.org

Topic: PHP 7 Errors | WordPress.org

再去参考:

PHP 7.x preg_replace替换了ereg_replace,D8主题崩坏 – Slyar Home

去看看别人是怎么替换的

人家说了:

<code>ereg_replace("&lt;div[^&gt;]*&gt;&lt;ul[^&gt;]*&gt;"
</code>

换成:

<code>preg_replace("/&lt;div[^&gt;]*&gt;&lt;ul[^&gt;]*&gt;/"
</code>

即除了换函数外,规则中,前后都加上/

替换后,上传到服务器上:

重启php

<code>service php-fpm restart
</code>

后,再去访问,主页中菜单终于显示了:

虽然顶部还有很多notice警告,但是无所谓了。

另外再去恢复之前禁止的2个插件。

再去恢复固定链接:

再去恢复默认的let’s encrypt的nginx配置,带支持TLS v1.3

<code>[root@VM_0_11_centos vhost]# ll
total 4
-rw-r--r-- 1 root root 1530 Dec 30 11:17 www.crifan.org.conf
[root@VM_0_11_centos vhost]# rm -f www.crifan.org.conf
[root@VM_0_11_centos vhost]# rz
rz waiting to receive.
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring www.crifan.org_LetEncryptedGenerated.conf...
  100%       1 KB       1 KB/sec    00:00:01       0 Errors  

[root@VM_0_11_centos vhost]# ll
total 4
-rw-r--r-- 1 root root 1530 Dec 30 11:17 www.crifan.org_LetEncryptedGenerated.conf
[root@VM_0_11_centos vhost]# mv www.crifan.org_LetEncryptedGenerated.conf www.crifan.org.conf
[root@VM_0_11_centos vhost]# service nginx reload
Redirecting to /bin/systemctl reload nginx.service
</code>

【总结】

此处WordPress搬家后,网站主页:

基本上是白屏

但是大前端主题的框架还能显示。

调查到最后:

通过开启了WordPress的wp-config.php的

define(‘WP_DEBUG’, true);

后,发现原因是:

php版本安装了php7后,大前端的主题中的很多文件中的:

ereg_replace

都报错了 -》 导致(Chrome调试发现)网页返回500错误

解决办法:

把ereg_replace都换成preg_replace

且语法也要略有修改。

-》

/wp-content/themes/daqianduan-d8-jquiss

中的7个文件:

<code>➜  daqianduan-d8-jquiss tree .
.
├── header.php
└── pages
    ├── archives.php
    ├── links.php
    ├── page.php
    ├── readers.php
    ├── tags.php
    └── tougao.php

1 directory, 7 files
</code>

<code>ereg_replace("&lt;div[^&gt;]*&gt;&lt;ul[^&gt;]*&gt;"
</code>

换成:

<code>preg_replace("/&lt;div[^&gt;]*&gt;&lt;ul[^&gt;]*&gt;/"
</code>

即可。

转载请注明:在路上 » 【已解决】WordPress网站搬家后页面显示但不显示内容

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.191 seconds, using 23.43MB memory