【问题标题】:php error_reporting() method in the 5.6.3 version5.6.3版本中的php error_reporting()方法
【发布时间】:2015-03-15 00:47:37
【问题描述】:

在以下示例中:

<?php
 // this code is written to test error reporting function in runtime
error_reporting(0);
echo $var = 'hex'  // I have made this mistake here by my will but error reporting message still pops up.
$name = 'rex';
?>

我想在运行时关闭 php 中的错误报告。我使用了声明error_reporting(0); 但它不适用于我的版本,它尝试了以下问题php error reporint 提出的解决方案,但它不起作用。我认为这里使用了另一个版本。 我的 php 版本是 php 5.6.3。我已经检查了php doumentation 的解决方案,但我找不到答案。 我该如何解决这个问题?

【问题讨论】:

  • @symcbean 我对你说代码仍然显示错误消息,我在问这是什么原因。你读好这个问题了吗?通常它不能显示,但它仍在我的浏览器中显示。
  • @isymcbean 是否无法从 php 文件中禁用它?
  • @pentanol 文件甚至无法执行的时候。

标签: php error-reporting


【解决方案1】:

第二行代码末尾缺少分号

echo $var = 'hex' 

这是错误的原因,这是一个编译错误,而不是运行时错误。因为无法编译成功,所以脚本根本没有启动。没有运行时,脚本从未运行过。

没有办法抑制编译错误。他们的目的是向程序员展示脚本无法编译以及原因。

【讨论】:

  • 我知道缺少分号。这是我做的。我在说为什么 error_reportong(0);指令不会关闭错误报告。请仔细阅读问题。
  • 我读了你的问题,你没有读我的答案。指令error_reporting(0); 没有运行。您的脚本根本没有被解释。它在编译阶段失败了。 PHP 脚本在被解释之前被编译。编译检查其语法并生成程序的“编译”形式。这是解释器解释的二进制形式;您可以将其视为可执行程序。因为编译失败,没有生成二进制形式,你的脚本也没有执行。
  • 您对 PHP 解释器的工作原理有错误的理解。它不会逐行读取和执行脚本。它读取整个文件,检查其语法并将其转换为内部二进制格式如果它没有任何语法错误。然后它开始解释它。您的脚本有语法错误(缺少分号),这就是编译失败的原因,没有生成二进制格式并且解释器没有任何要解释的代码;即脚本根本不运行;甚至没有打电话给error_reporting()
  • 你的意思是 error_reporting() 只与运行时错误有关,而不是语法错误。
  • 没错。并且必须执行它才能产生任何效果。在error_reporting(); 之前放置一个echo("My script is running"); 以检查您自己的脚本是否未执行。
【解决方案2】:

你有一个编译错误; error_reporting 上的 cmets 表明编译时错误可能无法通过运行时指令控制。

这不会导致出现任何错误

error_reporting(0);
echo $var = 'hex';
$name = 'rex';
echo $A;

这会导致出现错误

error_reporting(E_ALL);
echo $var = 'hex';
$name = 'rex';
echo $A;

这也会导致出现错误

error_reporting(0);
echo $var = 'hex'
$name = 'rex';
echo $A;

【讨论】:

  • 我不想纠正错误。我正在尝试查看 error_reporting(0);运行时错误报告的轮次。但它确实在我的 php 版本中关闭了它。我正在寻找如何将其关闭。
猜你喜欢
  • 2015-02-12
  • 2017-08-27
  • 2016-03-24
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 2011-12-21
  • 2012-09-03
相关资源
最近更新 更多