Loading... ## 经过 就在上个月愚人节这天,typecho突然宣布更新1.2.0了,我还以为这是官方的愚人节玩笑,结果真的更新了,果断升级! typecho1.2.0是支持php8.0的,正好本博客所用的主题handsome也同样支持php8.0了,果断升级php版本! 升级后主题的报错作者帮助我找到了问题,强烈推荐[handsome主题](https://www.blogbig.cn/go/ssKgydyT/)! 然后就是各种插件的问题,插件装的少所以都逐一更新版本后修复了,还需要感谢[cosUploadV5插件](https://www.blogbig.cn/go/CSff4loI/)的作者,耐心解答问题并且帮忙修复了。 最后是[Pisces小程序](https://www.blogbig.cn/go/VSM3dn7b/)插件的Use of undefined错误问题一直解决不了,没办法只能自己动手了! 经过网络上收集信息,自己反复摸索,最后解决了问题。 不得不说搜索引擎的大部分答案都是关闭php报错,真的是误人子弟啊! ## 解决 升级后访问博客小程序发现空白了,于是在访问记录里查看报错信息。 * 开启typecho的debug模式 typecho 默认关闭了debug模式,在出现500错误的时候,无法看到具体的错误信息。可以按照下面操作打开typecho debug 模式,查看具体的错误信息: 打开typecho 目录下的config.inc.php 在文件中增加下面一行代码后保存文件 ``` define('__TYPECHO_DEBUG__', TRUE); ``` * 查看报错信息 ``` Warning: Use of undefined constant.... ``` 这里在php文件的多少行就不展示出来了,问题已经修复了,复现也麻烦。 打开查看报错的文件, * 找到问题所在 ``` $post[0]['thumb'] = $this->db->fetchAll($this->db->select('str_value')->from('table.fields')->where('cid = ?', $cid)->where('name = ? ',thumb))?$this->db->fetchAll($this->db->select('str_value')->from('table.fields')->where('cid = ?', $cid)->where('name = ? ',thumb)):array(array("str_value"=>$thumb)); ``` 在php中出现这个错误信息,通常是没有明确类型,上一行代码中的 **thumb** 前面没有 `$` ,表示它不是一个**变量**,它没有`”` 或者`’`包裹表示**thumb** 它也不是一个**常量**,最后php就会给出 `undefined constant` 这样的报错。 这样的报错只是在php7+中关闭报错的话可以继续执行,而php8.0不行。 * 修复问题 最后我们用`'`来包裹它 ``` $post[0]['thumb'] = $this->db->fetchAll($this->db->select('str_value')->from('table.fields')->where('cid = ?', $cid)->where('name = ? ','thumb'))?$this->db->fetchAll($this->db->select('str_value')->from('table.fields')->where('cid = ?', $cid)->where('name = ? ','thumb')):array(array("str_value"=>$thumb)); ``` 刷新继续查看,还是报错,仔细查看文件内容后发现代码里有很多类似的问题,最后搜索替换解决问题! 参考于:[ php 出现 “ Warning: Use of undefined constant” 的解决方法](https://www.blogbig.cn/go/r6hbOEv6/) 正文到此结束 最后修改:2022 年 05 月 06 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 8 如果觉得我的文章对你有用,请随意赞赏