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

标签 php arrays debugging error-handling warnings

这是什么?

这是一些关于您在 PHP 编程时可能遇到的警告、错误和通知的答案,但不知道如何修复它们。这也是一个社区 Wiki,因此邀请每个人参与添加和维护此列表。

这是为什么?

"Headers already sent"这样的问题或"Calling a member of a non-object"经常出现在 Stack Overflow 上。这些问题的根本原因总是相同的。因此,这些问题的答案通常会重复它们,然后向运算符(operator)展示在特定情况下要更改哪一行。这些答案不会给网站增加任何值(value),因为它们仅适用于 OP 的特定代码。其他有相同错误的用户无法轻松地从中读出解决方案,因为它们太本地化了。这是可悲的,因为一旦你了解了根本原因,修复错误就变得微不足道了。因此,此列表试图以通用的应用方式解释该解决方案。

我应该在这里做什么?

如果您的问题已被标记为与此问题重复,请在下面找到您的错误消息并将修复应用于您的代码。答案通常包含进一步调查的链接,以防仅从一般答案中不清楚。

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

列表

另请参阅:

最佳答案

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

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

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

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

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

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

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

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

如果您的文件有多个<?php ... ?>其中的代码块,它们之间不应该有任何空格。 (注意:如果您有自动构造的代码,您可能会有多个 block )

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

相关问题:

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

相关文章:

php - Codeigniter 使用单选按钮进行多次插入

php - 在 PHPMyAdmin 中收到 MySQL 错误

php - MySQL计算子元素数

c - 从函数中重新分配结构中的动态数组

javascript - 按对象属性对 javascript 对象数组进行排序

ios - Xcode 8 - 内存调试器不起作用

c++ - (定义一个宏来)方便OpenGL命令调试?

php - onmouseover 获取引用 mysql 表的列表项的 id,并用表行填充新列表

JavaScript 数据操作

java - IntelliJ IDEA 调试器中变量面板中变量描述的解释是什么?