PHP中的错误参考 - 这个错误的含义是什么?
P粉894008490
P粉894008490 2023-08-21 18:35:04
0
1
449

这是什么?

这是关于在编写PHP代码时可能遇到的警告、错误和通知的一系列答案,如果你对如何修复它们一无所知,可以参考这个列表。这也是一个社区维基,所以每个人都可以参与其中,添加和维护这个列表。

为什么会有这个列表?

像“Headers already sent”或“Calling a member of a non-object”这样的问题在Stack Overflow上经常出现。这些问题的根本原因总是相同的。因此,对这些问题的答案通常会重复解释并显示给OP在他们特定情况下需要更改的行。这些答案对网站没有任何价值,因为它们只适用于OP的特定代码。其他遇到相同错误的用户无法轻松地从中读取解决方案,因为它们过于局限。这是令人遗憾的,因为一旦你理解了根本原因,修复错误就是微不足道的。因此,这个列表试图以一种通用的方式解释解决方案。

我应该在这里做什么?

如果你的问题被标记为这个问题的重复,请在下面找到你的错误信息并将修复方法应用到你的代码中。答案通常包含进一步的链接,以便在仅仅通过通用答案无法明确解决问题时进行调查。

如果你想贡献,请在每个答案中添加你“最喜欢”的错误信息、警告或通知,以及它的简短描述(即使只是突出显示与它们手册页面相关的术语)、可能的解决方案或调试方法,以及有价值的现有Q&A的列表。同时,欢迎改进任何现有答案。

列表

  • 什么都看不见。页面是空白的。(也被称为白屏死亡
  • 代码不运行/看起来我的PHP代码的部分被输出
  • 警告:无法修改头信息 - 头已经被发送
  • 警告:mysql_fetch_array()期望参数1是资源,但给定的是布尔值,也被称为

    警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源

  • 警告:[函数]期望参数1是资源,但给定的是布尔值
  • 警告:[函数]:无法打开流:[原因]
  • 警告:open_basedir限制生效
  • 警告:除以零
  • 警告:非法字符串偏移量 'XXX'
  • 警告:count()的参数必须是一个数组或实现了Countable接口的对象
  • 语法错误:意外的 '['
  • 语法错误:意外的T_XXX
  • 语法错误:意外的T_ENCAPSED_AND_WHITESPACE
  • 语法错误:意外的T_PAAMAYIM_NEKUDOTAYIM
  • 语法错误:意外的'require_once'(T_REQUIRE_ONCE),期望函数(T_FUNCTION)
  • 语法错误:意外的T_VARIABLE
  • 致命错误:分配的内存大小为XXX字节,已用尽(尝试分配XXX字节)
  • 致命错误:超过了XX秒的最大执行时间
  • 致命错误:在非对象上调用成员函数...或null
  • 致命错误:调用未定义的函数XXX
  • 致命错误:无法重新声明XXX
  • 致命错误:无法在写上下文中使用函数返回值
  • 致命错误:AAA::BBB()的声明必须与CCC::BBB()兼容
  • AAA::BBB()的返回类型应该与CCC::BBB()兼容,或者应该使用#[ReturnTypeWillChange]属性
  • 致命错误:在非对象上下文中使用$this
  • 致命错误:无法将闭包类的对象转换为字符串
  • 致命错误:未定义的类常量
  • 致命错误:未捕获的TypeError:参数#n必须是类型x,给定的是y
  • 注意:数组转换为字符串(< PHP 8.0)或警告:数组转换为字符串(>= PHP 8.0)
  • 注意:尝试获取非对象属性的错误
  • 注意:未定义的变量或属性
  • “注意:未定义的索引”,或“警告:未定义的数组键”
  • 注意:未定义的偏移量XXX [参考]
  • 注意:未初始化的字符串偏移量:XXX
  • 注意:使用未定义的常量XXX - 假定为'XXX' / 错误:未定义的常量XXX
  • MySQL:您的SQL语法错误;请检查与您的MySQL服务器版本相对应的手册以使用正确的语法...在第...行
  • 严格标准:非静态方法[<类>::<方法>]不应该被静态调用
  • 警告:函数期望参数X为布尔值/字符串/整数
  • HTTP错误500 - 内部服务器错误
  • 已弃用:使用花括号的数组和字符串偏移访问语法已弃用

另外,请参见:

  • 参考 - PHP中的这个符号代表什么?

P粉894008490
P粉894008490

全部回复 (1)
P粉654894952

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

当您的脚本尝试向客户端发送HTTP头部时,但在此之前已经有输出,导致头部已经发送到客户端。

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

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

  My Page  ...

session_start()函数将尝试向客户端发送带有会话cookie的头部。但是当PHP将元素写入输出流时,已经发送了头部。您需要将session_start()移到顶部。

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

经常被忽视的输出是PHP结束标记?>后的换行符。一般认为,当它是文件中的最后一个内容时,省略?>是一种标准做法。同样,此警告的另一个常见原因是在开头的之前有一个空格、换行符或不可见字符,导致Web服务器发送头部和空白/换行符,因此当PHP开始解析时无法提交任何头部。

如果您的文件中有多个代码块,请确保它们之间没有任何空格。(注意:如果您有自动生成的代码,可能会有多个代码块)

还请确保您的代码中没有任何字节顺序标记(Byte Order Marks),例如脚本的编码为UTF-8带有BOM。

相关问题:

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!