- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的 PHP 脚本(PHP 5.6、Apache 2.2)间歇性地遇到这个问题:
Warning: Cannot modify header information - headers already sent in /path/to/index.php on line 55
这个警告没有我在其他问题中看到的“发送者”部分,所以我在违规的 header()
和 setcookie 之前添加了这段代码()
调用:
if (headers_sent($filename, $linenum)){
echo("Output buffer: #" . ob_get_contents() . "#");
echo "Headers already sent in $filename on line $linenum: ";
print_r(headers_list());
}
这是问题发生时我得到的输出:
Output buffer: ##
Headers already sent in on line 0:
Array (
[0] => X-Powered-By: PHP/5.6.23
[1] => Content-type: text/html; charset=UTF-8
)
(旁注:我在 php.ini 中将 output_buffering 设置为 4096 字节,所以这两个 header 中的 63 个字符不应该被缓冲并等待更多字符,而不是过早发送吗?)
这个问题是在我第一次启动包含网络服务器的 Docker 容器时出现的。之后,当我调用 header()
和 setcookie()
使用户登录或重定向到登录页面。
我已经阅读并重读了 this answer对于一般的“ header 已发送”错误,并且我已尽我所能排除了这些可能的原因:
setcookie()
或 header()< 之前,HTML 会阻止或调用 print
、echo
等
auto_prepend_file
php.ini 设置gzip
流编码 - 安装了 zlib,但 zlib.output_compression
已关闭extension=
php.ini 设置那个答案提到了
It's typically a PHP extension or php.ini setting if no error source is concretized.
所以,我现在正在查看我的扩展...get_loaded_extensions
给我一个包含这些条目的 51 长数组:
Core, date, ereg, libxml, openssl,
pcre, zlib, filter, hash, Reflection,
SPL, session, standard, apache2handler, bz2,
calendar, ctype, curl, dom, exif,
fileinfo, ftp, gd, gettext, iconv,
mysqlnd, PDO, Phar, posix, shmop,
SimpleXML, snmp, soap, sockets, sqlite3,
sysvmsg, sysvsem, sysvshm, tokenizer, xml,
xmlwriter, xsl, mysql, mysqli, pdo_mysql,
pdo_sqlite, wddx, xmlreader, json, zip, mhash
我没有使用所有这些,所以我计划检查并删除未使用的,希望其中一个是导致问题的原因。
最坏的情况,我会尝试增加我的 output_buffering
值或使用 ob_start()
和 ob_end_flush()
开始和我的文件结束。我不知道为什么当我当前的 output_buffering
值为 4096 时这会修复它,而且我知道此解决方法有其自身的问题。
我在这里遗漏了什么——我需要检查其他可能的原因吗?我应该尝试不同的 PHP 版本,还是在没有扩展的干净 PHP 安装上运行我的代码子集?
编辑:添加了 ob_get_contents()
调用和输出,以及关于能够通过启动新的 Docker 容器来一致地重现它的信息。删除了有关我的 error_reporting
值的信息;更改它只会发现 always_populate_raw_post_data
弃用通知,修复它对此处描述的问题没有影响。
最佳答案
我过去曾看到过由于行结束格式引起的问题。您要将文件从一个操作系统环境移动到另一个操作系统环境吗?
有时隐藏的回车符 (/r) 或其他特殊的空白字符会导致这种情况,但在文件中不可见。
关于PHP 5.6 : headers_sent intermittently returns true, 空文件名和第 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42827556/
询问 unrelated question我有这样的代码: public boolean equals(Object obj) { if (this == obj) retur
在我之前的一个问题中 js: Multiple return in Ternary Operator我询问了有关使用三元运算符返回多个参数的问题。但是现在参数IsActveUser boolean(t
假设我有一个带有 return 的 if 语句。从效率的角度来看,我应该使用 if(A > B): return A+1 return A-1 或 if(A > B): return
例如考虑以下代码: int main(int argc,char *argv[]) { int *p,*q; p = (int *)malloc(sizeof(int)*10); q
PyCharm 对这段代码发出警告,说最后一个返回是不可访问的: def foo(): with open(...): return 1 return 0 如果 ope
我想实现这样的目标: 如果在返回 Json 的方法中抛出异常,则返回 new Json(new { success = false, error = "unknown"}); 但如果方法返回 View
它是多余的,但我正在学习 JS,我想知道它是如何工作的。 直接从模块返回函数 let func1 = function () { let test = function () {
我不明白我应该使用什么。我有两页 - intro.jsp(1) 和 booksList.jsp(2)。我为每一页创建了一个 Controller 类。第一页有打开第二页的按钮:
我最近在 Joomla 组件(Kunena,更准确地说是 Kunena)中看到这段代码,那么使用 $this->return VS 简单的 return 语句有什么区别. 我已经用谷歌搜索了代码,但没
我的类实现了 IEnumerable。并且可以编译这两种方式来编写 GetEnumerator 方法: public IEnumerator GetEnumerator() { yield r
我只是在编码,我想到了一个简单的想法(显然是问题),如果我有一个像这样的函数: int fun1(int p){ return(p); } 我有一个这样的函数: int fun1(int p){
这个问题在这里已经有了答案: What does the comma operator do in JavaScript? (5 个答案) 关闭 9 年前。 function makeArray
假设我写了一个 for 循环,它将输出所有数字 1 到 x: x=4 for number in xrange(1,x+1): print number, #Output: 1 2 3 4 现
我最近在这个 Apache Axis tutorial example. 中看到了下面的一段代码 int main() { int status = AXIS2_SUCCESS; ax
function a(){ return{ bb:"a" } } and function a(){ return { bb:"a" } } 这两个代码有什么区别吗,如果有请
function a() { return 1; } function b() { return(1); } 我在 Chrome 的控制台中测试了上面的代码,都返回了 1。 function c()
考虑这三个函数: def my_func1(): print "Hello World" return None def my_func2(): print "Hello World"
这可能是一个愚蠢的问题,但我正在努力,如果有一种简明的方法来测试函数的返回结果,如果它不满足条件,则返回该值(即,传递它)。。现在来回答一个可能的问题,是的,我正在寻找的类似于例外提供的东西。然而,作
我正在测试一个函数,并尝试使用 return 来做什么,并在 PowerShell 5.1 和 PwSh 7.1 中偶然发现了一个奇怪的问题,即 return cmdlet似乎不适合在团体中工作: P
这个问题已经有答案了: Return in generator together with yield (2 个回答) Why can't I use yield with return? (5 个回
我是一名优秀的程序员,十分优秀!