【问题标题】:PHP 5.3: "Declaration of ... should be compatible with that of ..." errorPHP 5.3:“...的声明应该与...的声明兼容”错误
【发布时间】:2011-04-30 08:28:12
【问题描述】:

升级到 PHP 5.3 后,我的应用程序被淹没了

“...的声明应该与...的声明兼容”

样式错误。我了解这些错误的性质,但我希望禁用它们。

error_reporting setting in php.ini"E_ALL & ~(E_NOTICE | E_DEPRECATED)",但此错误继续出现。我以为它包含在 E_STRICT 中,但我错了吗?

【问题讨论】:

  • 不是说是什么类型的错误吗?
  • 这些确实是 E_STRICT 错误,但是 IMO 你应该解决它们的原因而不是报告它们。保持代码干净。
  • 这不是干净代码的问题。该错误是子类的方法比父类中的相同方法具有额外参数的结果。特别是,它是控制器类的 _defaultAction() 函数。扩展的默认操作很可能接受父类不接受的参数。我可以很容易地使用 func_get_args() 来规避这个问题,但是方法声明完全没有相关含义。

标签: error-handling php php-ini


【解决方案1】:

这是一个E_STRICT 错误。将您的 php.ini 设置更改为 E_ALL & ~(E_NOTICE | E_DEPRECATED | E_STRICT)...

但它应该默认关闭(它不包含在E_ALL 中)。所以如果你得到它们,那意味着它在某个地方被打开了。问题是,在哪里?是否在文件中的任何位置声明 error_reporting(...)?如果是这样,请检查它们。如果没有,请确保您正在编辑正确的 php.ini 文件(检查phpinfo())...您始终可以为E_STRICT 执行grep 以尝试找到它被打开的位置...

【讨论】:

  • 也可以使用error_reporting(-1)来启用,这是在开发机器上启用所有错误的推荐方法。
  • 我更改了php.ini中的设置,但仍然出现错误。它没有在其他任何地方设置(通过 grep 检查)并且在运行时更改 error_reporting 值无效。此外,错误中引用的行始终是声明子类的行,如果这可以说明问题的话。
  • 为了完整起见,E_STRICT 包含在 5.4 的 E_ALL 中。
【解决方案2】:

让我告诉你一个好的设置。

你可以更改php.ini,在这个文件中,你可以搜索一个句子为ignore_repeated_errors = Off,你应该把关闭状态改为开启状态。

如果你也遇到相同类型的错误,你应该设置Error Level Constants

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多