php - 引用-此错误在PHP中意味着什么?

标签 php oop debugging warnings

这是什么?

这是有关警告,错误和注意事项的许多答案,这些警告,错误和注意事项在您对PHP进行编程时可能会遇到,并且不知道如何解决它们。这也是一个社区Wiki,因此邀请所有人参与添加和维护此列表。

为什么是这样?

"Headers already sent""Calling a member of a non-object"之类的问题经常在堆栈溢出中弹出。这些问题的根本原因总是相同的。因此,这些问题的答案通常会重复它们,然后向OP显示在特定情况下应更改的行。这些答案不会为网站增加任何价值,因为它们仅适用于OP的特定代码。具有相同错误的其他用户无法轻松地从中读取解决方案,因为他们过于本地化。令人遗憾的是,一旦您了解了根本原因,就可以轻松地修复错误。因此,此列表试图以一种通用的方式来解释该解决方案。

我该怎么办?

如果您的问题已被标记为与此问题的重复,请在下面找到您的错误消息,并将修复程序应用于您的代码。答案通常包含进一步的链接,以进行调查,以免仅凭一般答案无法明确答案。

如果您想做出贡献,请添加“最喜欢的”错误消息,警告或通知,每个答案一个,简短说明其含义(即使只是在其手册页上突出显示术语),可能的解决方案或调试方法以及现有有价值的问答列表。此外,请随时改善任何现有答案。

名单


Nothing is seen. The page is empty and white.(也称为白页/死亡屏幕)
Code doesn't run/what looks like parts of my PHP code are output
Warning: Cannot modify header information - headers already sent
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given又称
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource又称
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given(或类似变体)
Warning: [function] expects parameter 1 to be resource, boolean given
Warning: [function]: failed to open stream: [reason]
Warning: open_basedir restriction in effect
Warning: Division by zero
Warning: Illegal string offset 'XXX'
Warning: count(): Parameter must be an array or an object that implements Countable
Parse error: syntax error, unexpected '['
Parse error: syntax error, unexpected T_XXX
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
Parse error: syntax error, unexpected 'require_once' (T_REQUIRE_ONCE), expecting function (T_FUNCTION)
Parse error: syntax error, unexpected T_VARIABLE
Fatal error: Allowed memory size of XXX bytes exhausted (tried to allocate XXX bytes)
Fatal error: Call to a member function ... on a non-object or null
Fatal Error: Call to Undefined function XXX
Fatal Error: Cannot redeclare XXX
Fatal error: Can't use function return value in write context
Fatal error: Declaration of AAA::BBB() must be compatible with that of CCC::BBB()'
Fatal error: Using $this when not in object context
Fatal error: Object of class Closure could not be converted to string
Fatal error: Undefined class constant
Notice: Array to string conversion
Notice: Trying to get property of non-object error
Notice: Undefined variable or property
Notice: Undefined Index
Notice: Undefined offset XXX [参考]
Notice: Uninitialized string offset: XXX
Notice: Use of undefined constant XXX - assumed 'XXX'
MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ... at line ...
Strict Standards: Non-static method [<class>::<method>] should not be called statically
Warning: function expects parameter X to be boolean/string/integer
HTTP Error 500 - Internal server error
Deprecated: Array and string offset access syntax with curly braces is deprecated


另请参阅:


Reference - What does this symbol mean in PHP?

最佳答案

警告:无法修改标头信息-标头已发送

当您的脚本尝试将HTTP标头发送到客户端但之前已经有输出时,会发生此情况,这导致标头已经发送到客户端。

这是一个E_WARNING,它不会停止脚本。

一个典型的示例是这样的模板文件:

<html>
    <?php session_start(); ?>
    <head><title>My Page</title>
</html>
...


session_start()函数将尝试将带有会话cookie的标头发送到客户端。但是PHP在将<html>元素写入输出流时已经发送了标头。您必须将session_start()移到顶部。

您可以通过在代码触发警告之前检查各行并检查其输出位置来解决此问题。将任何发送标头的代码移到该代码之前。

一个经常被忽略的输出是PHP关闭?>之后的换行符。当?>是文件中的最后一件事时,这被认为是标准做法。同样,此警告的另一个常见原因是,开头<?php前面有空格,行或不可见字符,导致Web服务器发送标头和空白/换行符,因此当PHP开始解析时将不会能够提交任何标题。

如果文件中包含多个<?php ... ?>代码块,则文件之间不应有任何空格。 (注意:如果您具有自动构造的代码,则可能有多个块)

还要确保您的代码中没有任何字节顺序标记,例如,当脚本的编码为带有BOM的UTF-8时。

相关问题:


Headers already sent by PHP
All PHP "Headers already sent" Questions on Stackoverflow
Byte Order Mark
What PHP Functions Create Output?

关于php - 引用-此错误在PHP中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636132/

相关文章:

python - 为什么 python 的 __init__ 函数没有返回语句,即使它是一个函数

java - 我怎样才能让 friend 停止思考全局并开始思考相对?

c# - Java 是否像 C# 一样具有 'Debug' 和 'Release' 构建模式?

php - SOAP 客户端接收空标准类

php - 什么是字符串的序数值?

php - 将图像上传到服务器中的两个不同文件夹

php - mktime 在 6 月/7 月产生错误的奇怪行为

c# - 更改另一个类中对象的属性?

linux - 阅读linux内核源代码

java - Android Studio 调试器不会在特定文件中的断点处停止