- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题的答案是community effort .编辑现有答案以改进这篇文章。它目前不接受新的答案或互动。
运行我的脚本时,我收到了几个这样的错误:
Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:12) in /some/file.php on line 23
header()
和
setcookie()
调用。
最佳答案
发送 header 之前没有输出!
必须调用发送/修改 HTTP header 的函数 在进行任何输出之前 .
summary ⇊
否则调用失败:
Warning: Cannot modify header information - headers already sent (output started at script:line)
header
/ header_remove
session_start
/ session_regenerate_id
setcookie
/ setrawcookie
<?php
或之后 ?>
print
, echo
和其他产生输出的函数 <html>
之前的部分 <?php
代码。 HTTP/1.1 200 OK
Powered-By: PHP/5.3.7
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
<html><head><title>PHP page output page</title></head>
<body><h1>Content</h1> <p>Some more output follows...</p>
and <a href="/"> <img src=internal-icon-delayed> </a>
页面/输出总是跟在标题后面。 PHP 必须通过
print
、
echo
、
<html>
)时,它会
header()
警告包含所有相关信息
Warning: Cannot modify header information - headers already sent by(output started at /www/usr2345/htdocs/auth.php:52) in/www/usr2345/htdocs/index.php on line 100
header()
所在的脚本调用失败。
auth.php
和
线路52
.这就是您必须寻找过早输出的地方。
print
的有意输出和 echo
语句将终止发送 HTTP header 的机会。必须重构应用程序流程以避免这种情况。使用 functionsheader()
调用发生在消息之前print
, echo
, printf
, vprintf
trigger_error
, ob_flush
, ob_end_flush
, var_dump
, print_r
readfile
, passthru
, flush
, imagepng
, imagejpeg
.php
中未解析的 HTML 部分文件也是直接输出。header()
的脚本条件来电须注意<html>
之前块。<!DOCTYPE html>
<?php
// Too late for headers already.
使用模板方案将处理与输出逻辑分开。<?php
对于“script.php 第 1 行 ” 警告1
,那么它主要是<?php
token 。 <?php
# There's a SINGLE space/newline before <? - Which already seals it.
同样,附加脚本或脚本部分也可能发生这种情况:?>
<?php
PHP 实际上在关闭标签之后吃掉一个换行符。但它不会EF BB BF
,对于 UTF-8 编码的文档是可选的和冗余的。然而,PHP 必须将其视为原始输出。它可能显示为字符 
在输出中(如果客户端将文档解释为 Latin-1)或类似的“垃圾”。hexdump
通常可用,sed
/ awk
或 recode
)。phptags
tag tidier .phptags --whitespace *.php
在整个包含或项目目录上使用是安全的。?>
之后的空格?>
?>
PHPinclude()d
脚本是罪魁祸首。)gzip
流编码设置ob_gzhandler
. extension=
模块isset()
或 @()
——error_reporting
或
display_errors
按
php.ini
禁用,
header("Location: ...")
重定向默默地失败,这是非常
error_reporting(E_ALL);
ini_set("display_errors", 1);
或
set_error_handler("var_dump");
如果一切都失败了。
exit(header("Location: /finished.html"));
最好是一个效用函数,它打印用户消息
header()
的情况下失败。
output_buffering=
ob_start();
<?php ob_start(); ?>
开始第一个脚本,空格或ob_clean()
作为进一步的解决方法。)headers_sent()
核对
headers_sent()
探查是否
if (headers_sent()) {
die("Redirect failed. Please click on this link: <a href=...>");
}
else{
exit(header("Location: /user.php"));
}
有用的回退解决方法是:
<meta>
标签<meta>
标签。可以通过以下方式实现重定向: <meta http-equiv="Location" content="http://example.com/">
或者有一个短暂的延迟: <meta http-equiv="Refresh" content="2; url=../target.html">
当使用超过 <head>
时,这会导致无效的 HTML。部分。 <script> location.replace("target.html"); </script>
虽然这通常比 <meta>
更符合 HTML 标准解决方法,setcookie()
和
session_start()
也受到影响
setcookie()
和
session_start()
需要发一个
Set-Cookie:
HTTP header 。
关于php - 如何修复 PHP 中的 "Headers already sent"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8028957/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!