【问题标题】:PHP script stops without error message (Which error type?)PHP 脚本停止且没有错误消息(哪种错误类型?)
【发布时间】:2010-09-19 11:23:53
【问题描述】:

如果我更改实现接口的类的方法的签名,则 PHP 脚本会停止且不会显示错误消息,例如:

interface A
{
  public function somefunction();
}

class B implements A
{
  public function somefunction(XY $xy);
  {
   ... 
  }
} 

这当然是一个错误,但没有显示错误信息。

此错误类型的名称是什么? (我已经搜索了很多,但显然有错误的短语) 如何记录或输出此错误?

我使用的是 PHP 5.3.1(带有 XAMPP for Windows 1.7.3)

(我在 PHP

提前感谢您的任何提示!

【问题讨论】:

  • 你检查过你的error_log

标签: php xdebug


【解决方案1】:

放在文件顶部然后试试,

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
?>

如果仍然没有输出,请检查您的 error_log。

【讨论】:

    【解决方案2】:

    已解决

    @ontrack 谢谢,您的提示将我引向正确的方向:

    我正在使用自动加载函数来加载所需的类(通过使用 spl_autoload_register())。我的自动加载器的实现限制了所有错误消息......我不知道,这会导致这样的“更深”的错误不会出现。 这至少对我来说有点愚蠢,但我更高兴的是,我找到了这个问题的原因并且我学到了一些东西:-)

    非常感谢您的所有贡献!再次抱歉,我不能再编辑我最初的问题了。

    @outis谢谢,请阅读我的评论

    【讨论】:

    • @outis 感谢您提供此信息!这是我分析的一个重要提示。我会尝试更新到这个 PHP 版本(XDebug 版本已经是 2.1)。 (看来,我无法编辑最初的问题,因为我使用访客帐户添加了它,现在我使用新的“真实”帐户来回答)
    • @askkirati:一般来说:您需要相应地设置您的 php.ini。但是这个问题对我来说的问题是,我通过使用 @include somefile.php 而不是 include somefile.php 来抑制一个函数中的错误消息
    【解决方案3】:

    将以下内容放在脚本的顶部:

    error_reporting(E_ALL);
    

    应该报错。

    【讨论】:

      【解决方案4】:

      您的配置一定有问题。当我在 PHP 5.3.2+XDebug 2.1.0 下尝试示例代码时,PHP 报错:

      致命错误:B::somefunction() 的声明必须与 A::somefunction() 的声明兼容

      错误的类型是substitution 违规,因为B 在所有情况下都不能替代A

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-22
        • 2015-07-15
        • 2019-11-28
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多