1

php.ini,我的错误显示设置如下:

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
display_errors  = Off

它适用于任何通常调用的文件,但是,如果使用 jQuery/AJAX 调用文件,我会收到如下错误:

严格标准:不应静态调用非静态方法 XML_Util::replaceEntities(),假设 $this 来自第 664 行 /usr/lib/php/XML/Util.php 中的不兼容上下文

严格标准:不应静态调用非静态方法 XML_Util::createTagFromArray(),假设 $this 来自第 1231 行 /home/site/public_html/site/paypal/lib/Serializer/Serializer.php 中的不兼容上下文

严格标准:不应静态调用非静态方法 XML_Util::attributesToString(),假设 $this 来自第 652 行 /usr/lib/php/XML/Util.php 中的不兼容上下文

可以假设,这破坏了我网站的某些部分,我该如何解决这个问题?

我正在运行 PHP 5.4.10

正在使用 Jquery 函数调用文件:$.get$.post

4

1 回答 1

1

您正在使用的代码/库正在触发严格标准错误/通知/警告。

它的相关错误报告常量称为E_STRICTDocs,它是在 PHP 5.0 Docs中引入的。

由于 PHP 5.4E_STRICT是 的一部分E_ALL,所以如果你配置你做的方式,它也必须从中删除:

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
                                                    ^^^^^^^^^^^

因此,如果您E_STRICT从生产错误设置中排除,则不应再记录这些严格标准错误 - 这可能就像您在早期的 PHP 5.3 版本中遇到的那样。

此外,您应该联系库的供应商并请求使代码E_STRICT兼容。这是一种很好的做法,也向您展示了某些代码具有一定的质量。

对于您的开发,您同样应该使您的代码E_STRICT兼容,修复任何导致严格标准错误的地方。

同样适用于E_NOTICEand E_DEPRECATED,您应该在您的开发环境中启用这些消息并修复所有报告的问题。这样可以避免您太容易获得越来越多的错误。

来自php.ini

;;;;;;;;;;;;;;;;;;;
; Quick Reference ;
;;;;;;;;;;;;;;;;;;;
; The following are all the settings which are different in either the production
; or development versions of the INIs with respect to PHP's default behavior.
; Please see the actual settings later in the document for more details as to why
; we recommend these changes in PHP's behavior.

...

; error_reporting
;   Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
;   Development Value: E_ALL
;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

从您在问题中提供的信息中不清楚您看到输出而不是记录的错误消息的原因。这可能有多种原因,

  • 最直接的原因是您没有正确禁用错误显示 - 或在运行时再次启用它(该设置也可以从 PHP 代码中更改)。
  • 错误显示禁用,但仍有一些错误处理程序文档正在显示它们。

因此,除了错误级别设置之外,您的这部分问题还需要您进行更多故障排除,以找出显示错误消息的原因。


也可以看看:

于 2013-01-05T13:44:21.510 回答