这是一些关于您在 PHP 编程时可能遇到的警告、错误和通知的答案,但不知道如何修复它们。这也是一个社区 Wiki,因此邀请每个人参与添加和维护此列表。
诸如“标头已发送”或“调用非对象的成员”之类的问题经常出现在 Stack Overflow 上。这些问题的根本原因总是相同的。因此,这些问题的答案通常会重复它们,然后向操作员展示在特定情况下要更改哪一行。这些答案不会给网站增加任何价值,因为它们仅适用于 OP 的特定代码。其他有相同错误的用户无法轻松地从中读出解决方案,因为它们太本地化了。这是可悲的,因为一旦你了解了根本原因,修复错误就变得微不足道了。因此,此列表试图以通用的应用方式解释该解决方案。
如果您的问题已被标记为与此问题重复,请在下面找到您的错误消息并将修复应用于您的代码。答案通常包含进一步调查的链接,以防仅从一般答案中不清楚。
如果您想做出贡献,请添加您“最喜欢的”错误消息、警告或通知,每个答案一个,简短描述其含义(即使只是在其手册页中突出显示术语),可能的解决方案或调试方法以及有价值的现有问答列表。另外,请随意改进任何现有答案。
警告:mysql_fetch_array():提供的参数不是有效的 MySQL 结果资源
另请参阅:
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
警告:无法修改标头信息 - 标头已发送
当您的脚本尝试向客户端发送 HTTP 标头但之前已经有输出时,就会发生这种情况,这导致标头已发送到客户端。
这是一个
E_WARNING并且它不会停止脚本。一个典型的例子是这样的模板文件:
<html> <?php session_start(); ?> <head><title>My Page</title> </html> ...session_start()函数将尝试将带有会话 cookie 的标头发送到客户端。但是 PHP 在将元素写入输出流时已经发送了标头。您必须将session_start()移至顶部。您可以通过查看触发警告的代码之前的行并检查其输出位置来解决此问题。将任何标头发送代码移到该代码之前。
一个经常被忽视的输出是 PHP 结束
?>之后的新行。当?>是文件中的最后一个内容时,省略它被认为是一种标准做法。同样,此警告的另一个常见原因是当开头的前面有空格、行或不可见字符时,导致 Web 服务器发送标头和空格/换行符,因此当PHP 开始解析将无法提交任何标头。如果您的文件中有多个
代码块,则它们之间不应有任何空格。 (注意:如果您有自动构造的代码,您可能会有多个块)还要确保代码中没有任何字节顺序标记,例如当脚本的编码为带有 BOM 的 UTF-8 时。
相关问题: