如何启用调试以诊断具有已弃用语法错误的 500 内部服务器错误

How to Enable Debugging to Diagnose 500 Internal Server Error with Deprecated Syntax Errors

提问人:Justin 提问时间:10/25/2023 最后编辑:Justin 更新时间:11/5/2023 访问量:100

问:

描述:

我目前正在努力解决我的 WordPress 网站上一个相当顽固的问题,该问题表现为 500 内部服务器错误。为了深入了解这一点,我正在尝试启用调试,以便我可以查看详细日志并确定错误的根本原因。但是,在启用调试后,我的网页用相同的错误消息轰炸我,但在不同的行上。php 版本为 8.2.7 (支持 64bitové 值).错误消息如下:

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /home/www/hledampneu.cz/www/akaska.hledampneu.cz/wp-content/plugins/wpforms-lite/vendor/woocommerce/action-scheduler/classes/schema/ActionScheduler_StoreSchema.php on line 46

我正在寻求有关如何在两个主要领域进行操作的指导:

  1. 启用调试:我想知道有效启用调试的正确步骤,以便我可以收集详细的日志来诊断 500 内部服务器错误。这包括在 WordPress 和服务器本身上配置设置。

  2. 解决已弃用的语法错误:错误消息指示已弃用的语法存在问题,尤其是在提到的文件中。我希望能帮助理解导致这些错误的原因以及如何纠正它们,尤其是在给定文件 () 的上下文中。ActionScheduler_StoreSchema.php

您的见解和专业知识将对解决这些问题有很大帮助。提前致谢!

php wordpress 调试 internal-server-error http-status-code-500

评论

1赞 user3783243 10/25/2023
#2,问题是由PHP 8.2版本引起的。 优先使用 弃用。3v4l.org/WmjJV#v8.2.113v4l.org/BRedk#v8.2.11(我不使用 wordpress,所以无法帮助你,对不起)${...}{$...}
0赞 ADyson 10/25/2023
启用 php 错误日志记录。phpdelusions.net/articles/error_reporting#tldr(以及在线的许多其他地方)

答:

0赞 Mogens 10/25/2023 #1

最好的方法是在本地环境中设置 wordpress 页面,然后设置 XDebug。使用与 XDebug 兼容的 IDE(如 PHP Storm),您可以挂接到代码中并查看发生了什么。

https://xdebug.org/docs/install

因为你没有说你使用的版本(Wordpress、LAMP-Stack)。我建议你使用最新版本。

在此处查看 PHP 兼容性图表:https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/

最新的 WP 版本仅在 PHP > 7.4 中运行,有例外或作为测试版运行。

简单看一下您的页面似乎您使用的是 WP 6.3.2,主要问题位于插件 wpforms-lite 和 elementor 中。

我建议您首先将PHP版本降级到7.4,直到您的WP版本和使用的插件完全支持PHP 8。

如果你不想这样做,那么你也可以在你的PHP VHost或htaccess中禁用PHP弃用警告的输出,只要插件能完成它们的工作。

评论

0赞 Justin 10/25/2023
您是否认为我有必要验证错误是否不是由我正在使用的任何插件引起的?如果是这样,我将为您提供我已安装的插件的快速列表: Akismet 反垃圾邮件:垃圾邮件防护 Elementor Elementor 页眉和页脚生成器 ElementsKit 精简版 Kirki 自定义框架 网站维护模式 启动模板 WP调试 WPForms 精简版 我注意到其中一些插件有可用的新版本,并且我还在此查询中包含了 PHP 版本。感谢您的指导。
0赞 Mogens 10/25/2023
按照建议,您应该将PHP版本降级到7.4,直到至少WP核心支持PHP版本8.x。如果可能的话,我建议更新插件。
0赞 Bargle 11/5/2023 #2

对问题 2 的回答:当您使用 replace all 替换 every 时,它可能会起作用。${{$

评论

0赞 Community 11/6/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。