/www/wwwroot/blog.ybyq.wang/usr/plugins/AMP/templates/MIPpage.php on line 33
">

解决Typecho-Handsome主题的500错误

2025-04-21T23:52:00

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版本

解决步骤

  1. 发现问题与初步尝试

    • 发现网站报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);后,页面可以加载,但底部和右边无法正常显示。
  2. 广告拦截与插件和主题调整

    • 怀疑是广告拦截插件导致,检查了一下,发现有一个拦截,还以为是问题所在。
    • 禁用所有插件,回归默认主题后,网站可以加载出来。
  3. 主题与服务重启尝试

    • 切换回 handsome 主题后,问题依旧存在。
    • 摸索着重启网站和Nginx服务,但问题未解决。
  4. 切换PHP版本

    • 能改的都改了,抱着最后尝试的心态切换到PHP 7.4后,刷新网站发现很多内容无法显示,但没有报错了。
    • 再次切换回PHP 8.0,惊讶地发现网站可以正常加载,直接零帧起嘴WC...
  5. 恢复与设置

    • 万幸的是之前有备份(不然要哭晕),恢复了主题设置和样式,并不知道切换主题后全部设置都归零。
    • 逐个启动之前使用的插件,重新设置好,问题才彻底解决。

结论

  • 解决方案:通过切换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);)可以帮助获取详细的错误信息,便于进一步排查问题。
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »