解决Typecho-Handsome主题的500错误
Typecho 500错误解决历程
问题描述
- 错误信息:
Unsupported operand types: int - string
- 错误类型:
500 Internal Server Error
- 网站:https://blog.ybyq.wang/
- 主题:handsome主题 9.2.1 Pro
问题分析
- 错误解释:在PHP 8.0环境下,Typecho或主题代码中尝试对整数和字符串进行不支持的数学运算(例如减法或加法),导致致命错误。
- 我根本不知道到底为甚么会出现这个问题,当时只是修改了自定义js和css后,但是那些代码中也没有运算(ó﹏ò。)
- 下次再出现只能重新切换PHP版本
解决步骤
发现问题与初步尝试:
- 发现网站报500错误后,上网搜索解决办法未果。
- 查看浏览器控制台报错,找到了相关代码,但是不会改。。
The resource https://blog.ybyq.wang/usr/themes/handsome/assets/js/main.min.js was preloaded using link preload but not used within a few seconds...
The resource https://blog.ybyq.wang/usr/themes/handsome/assets/css/main.min.css was preloaded using link preload but not used within a few seconds...
- 添加调试代码
define('__TYPECHO_DEBUG__', true);
后,页面可以加载,但底部和右边无法正常显示。
广告拦截与插件和主题调整:
- 怀疑是广告拦截插件导致,检查了一下,发现有一个拦截,还以为是问题所在。
- 禁用所有插件,回归默认主题后,网站可以加载出来。
- 怀疑是广告拦截插件导致,检查了一下,发现有一个拦截,还以为是问题所在。
主题与服务重启尝试:
- 切换回
handsome
主题后,问题依旧存在。 - 摸索着重启网站和Nginx服务,但问题未解决。
- 切换回
切换PHP版本:
- 能改的都改了,抱着最后尝试的心态切换到PHP 7.4后,刷新网站发现很多内容无法显示,但没有报错了。
- 再次切换回PHP 8.0,惊讶地发现网站可以正常加载,直接零帧起嘴
WC...
。
恢复与设置:
- 万幸的是之前有备份(不然要哭晕),恢复了主题设置和样式,并不知道切换主题后全部设置都归零。
- 逐个启动之前使用的插件,重新设置好,问题才彻底解决。
结论
- 解决方案:通过切换PHP版本(从PHP 8.0到PHP 7.4,再回到PHP 8.0)成功解决了
Unsupported operand types: int - string
错误。 - 建议:在Typecho或主题代码中,确保在进行数学运算前将变量正确转换为整数或浮点数,以避免在PHP 8.0环境下出现类型不匹配错误。
其他注意事项
备份网站
:在进行任何修改前,请务必备份你的网站文件和数据库,以防万一操作失误导致数据丢失。- 调试模式:启用Typecho的调试模式(在
config.inc.php
中设置define('__TYPECHO_DEBUG__', true);
)可以帮助获取详细的错误信息,便于进一步排查问题。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »