事情起因

原本网站的服务器位置是在德国,然后我配了个百度云CDN打算提提速,但是不知道为什么这百度云CDN获取源站时老是会出现好几次403之后才获取成功。在尝试过各种办法之后,我确信是因为百度云CDN节点与网站服务器之间通讯时间过长所导致的,所以才有了这一次的网站迁移。这次迁移选中了一台美国的服务器,该服务商有针对中国线路进行优化,应该能完美解决这个问题。

迁移期间

迁移其实一开始十分顺利,导出数据库以及网站文件,在新的服务器上面创建数据库,分配新的SSL(旧的快过期了,顺便换一下),导入文件以及数据库,百度云上更改CDN的源站配置IP地址,当我以为一切将会很顺利的继续下去的时候,意外出现了。

一上去就看到传说中的 500 报错,提示只有一句 Line 135 Unclosed "{",老实说我对 Typecho 的研究不是很深,没有找到处理 Exception 的具体文件,只能一个一个文件的去排查。首先我发现只有前台上不去,后台还是可以上去的,所以一开始我是有尝试过切换前台模板的,但是我发现无论怎么样切换,报错依然存在。那么我也就只能从index.php开始排查了。

具体错误

从 index 排查到 Router 再排查到各个 Widget,最后还是回到了插件的部分,这里稍微解释一下为什么我一开始没有往插件方面想,因为理论上插件出问题的话后台很大几率也会出事,但没想到还真是插件出问题了。原因是我一个插件里面出现了一个小错误:

<?php

写成了

<?

老实说这个错误我还是第一次出现,但是我在德国的那台服务器上运行是没问题的,换到现在这台服务器却出了问题了,这大概是不同平台编译出来的 PHP 所导致的,所以下次还是写正规一点吧。。