PHP   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP 5.6:headers_sent间歇性地返回true,空文件名和第0行大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的 PHP脚本( PHP 5.6,Apache 2.2)中间歇性地遇到了这个问题:

这个警告没有我在其他问题中看过的“发送者”部分,所以我在违规的header()和setcookie()调用之前添加了这段代码:@H_262_2@

if (headers_sent($filename,$linenum)){
    echo("Output buffer: #" . ob_get_contents() . "#");
    echo "Headers already sent in $filename on line $linenum: ";
    print_r(headers_list());
}

这是问题发生时我得到的输出:@H_262_2@

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字节,所以不应该缓冲这两个标题中的63个字符并等待更多,而不是过早发送?)@H_262_2@

第一次启动包含Web服务器的Docker容器时出现此问题.之后,当我第一次访问我的网站一段时间(可能是一两个小时),当我调用header()和setcookie()来记录用户重定向登录页面.@H_262_2@

我已经阅读并重读了this answer一般的“Headers already sent”错误,并且尽我所能,我已经排除了这些可能的原因:@H_262_2@

>在我调用setcookie()或header()之前,HTML阻止或调用print,echo等
>我的PHP标签之外的空格
> BOM
> auto_prepend_file PHP.ini设置
> gzip stream encoding – 已安装zlib,但zlib.output_compression已关闭
>重复扩展= p​​hp.ini设置@H_262_2@

答案提到了这一点@H_262_2@

所以,我现在正在查看我的扩展… get_loaded_extensions为我提供了一个包含这些条目的51长度数组:@H_262_2@

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

我没有使用所有这些,所以我打算通过并删除未使用的,并希望其中一个导致问题.@H_262_2@

最糟糕的情况,我会尝试碰撞我的outpuT_Buffering值或使用ob_start()和ob_end_flush()来查看我的文件的开头和结尾.我不知道为什么当我当前的outpuT_Buffering值为4096时,这会解决它,我明白这个解决方法有自己的问题.@H_262_2@

在这里缺少什么 – 我还需要检查其他可能的原因吗?我应该尝试不同的PHP版本,还是在没有扩展的干净PHP安装上运行我的代码子集?@H_262_2@

编辑:添加了ob_get_contents()调用输出,以及有关能够通过旋转新的Docker容器一致地重现这一点的信息.删除了有关我的error_reporTing值的信息;更改此项仅发现了always_populate_raw_post_data弃用通知,修复了对此处描述的问题没有影响的通知.@H_262_2@

我已经看到由于过去的行结束格式而出现问题.您是否将文件一个操作系统环境移动到另一个

有时隐藏的回车符(/ r)或其他特殊的空白字符可能会导致这种情况,但在文件不可见.@H_262_2@

大佬总结

以上是大佬教程为你收集整理的PHP 5.6:headers_sent间歇性地返回true,空文件名和第0行全部内容,希望文章能够帮你解决PHP 5.6:headers_sent间歇性地返回true,空文件名和第0行所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。