在php.ini
中,我的错误显示设置如下:
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
display_errors = Off
适用于任何通常调用的文件,但是,如果使用jQuery / AJAX调用文件,我会收到如下错误:
严格标准:不应静态调用非静态方法XML_Util :: replaceEntities(),假设$ 664来自第664行/usr/lib/php/XML/Util.php中的不兼容上下文
严格标准:非静态方法XML_Util :: createTagFromArray()不应该静态调用,假设$ 12来自1231行/home/site/public_html/site/paypal/lib/Serializer/Serializer.php中的不兼容上下文
严格标准:不应静态调用非静态方法XML_Util :: attributesToString(),假设$ 652来自第652行/usr/lib/php/XML/Util.php中的不兼容上下文
可以假设,这打破了我网站的部分内容,我该如何解决这个问题?
我正在运行PHP 5.4.10
使用Jquery函数调用文件:$.get
或$.post
答案 0 :(得分:1)
您使用的代码/库正在触发严格标准错误/通知/警告。
相关的错误报告常量称为E_STRICT
Docs introduced in PHP 5.0Docs。
由于PHP 5.4 E_STRICT
是E_ALL
的一部分,因此如果您按照自己的方式进行配置,也必须将其从中删除:
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
^^^^^^^^^^^
因此,如果从生产错误设置中排除E_STRICT
,则不应再记录这些严格标准错误 - 这可能与您之前使用的PHP一样5.3版本。
此外,您应该与该库的供应商联系,并请求使代码 E_STRICT
兼容。这是一个很好的做法,也向您展示了一些代码具有一定的质量。
对于您的开发,您应该同样使代码E_STRICT
兼容,修复导致严格标准错误的任何地方。
同样适用于E_NOTICE
和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
您在问题中提供的信息中未明确显示输出的错误消息而非记录的错误消息的原因。这可能有多种原因,
除了错误级别设置之外,您的问题的这一部分需要更多的故障排除,以找出错误消息的显示原因。
另请参阅: