gpt4 book ai didi

php - 如何让 Apache 输出真正的所有错误?

转载 作者:行者123 更新时间:2023-12-02 07:46:24 25 4
gpt4 key购买 nike

所以我将 display_errors 设置为“On”和 error_reporting 到 E_ALL|E_STRICT甚至 display_startup_errors 也应为“On”。

然而,如果我忘记了 $ 或 a ,Apache 会给我一个空白页。

虽然我在 CLI 上收到一条消息。

该消息是如何显示的?

最佳答案

正如您的评论讨论所暗示的那样,问题在于您正试图在脚本中设置它。

为了运行脚本,PHP 解释器必须首先解析该脚本。如果解析失败(即:存在语法错误),则脚本无效,解释器根本不会运行它——它会发出 fatal error 。

因此,语法错误是编译时错误,而不是运行时错误。

因此,例如,如果您忘记了 $、)) 或 ;,则您的脚本语法无效。因此脚本没有运行。因此,您的 ini_set() 和类似语句永远不会运行。

解释器根本做不到那么远。

输出这些错误的唯一方法是在解释器尝试解析损坏的脚本之前设置这些变量,即:在 php.ini 中(或者可能在 .htaccess 中,如果你是在 mod_php 下运行)。这样,在解释器尝试解析损坏的脚本之前设置错误报告配置。


当 PHP 运行您的脚本时,它基本上会经历三个步骤(这是简化的):

1) 解析脚本——它从上到下扫描整个脚本,并创建它的表示。如果你犯了一个语法错误,它就无法解析,并发出一个 fatal error ,然后停止。

2) 编译脚本——它获取第一步的输出,并将其转换为机器代码。

3) 运行脚本——它运行机器代码,也就是您的脚本,基本上从第 1 行开始。

您遇到的问题是在第 1 步(解析)期间,PHP 尚未运行您的任何代码(直到第 3 步才运行)。因此,它运行的设置是 PHP ini 中的默认设置——如果您编写了一个只有一个 phpinfo() 调用的单行脚本,您会看到什么。

关于php - 如何让 Apache 输出真正的所有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6663527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com