在我的申请中,我可以确保没有这种"无意"的空白或其他什么.我不在控制器或模型上执行"echo",但是日志文件中始终存在"header already sent"错误(浏览器中没有显示).我也没有关闭php标签.唯一"可疑"的事情是我在模型和控制器上加载会话和输入库.
这实际上不是一个大问题,但如果我使用CLI请求,则错误会变得很糟糕.
浏览片刻后,我在堆栈溢出时找到了这个答案:https: //stackoverflow.com/a/13783368/755319 它说我可以在index.php的开头添加ob_start()用于输出缓冲
<?php
ob_start();
/*
*---------------------------------------------------------------
* APPLICATION ENVIRONMENT
*---------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
是保存做这样的事情吗?
编辑:好的,我可能错了,错过了一些东西.有没有任何程序化的方法来找出错误?(找到错误的php标签,空格或其他东西的程序)?
再次编辑:错误仅在CLI模式下生成.错误如下:
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message: Undefined index: REMOTE_ADDR</p>
<p>Filename: core/Input.php</p>
<p>Line Number: 351</p>
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: Cannot modify header information - headers already sent by (output started at /home/gofrendi/public_html/No-CMS/system/core/Exceptions.php:185)</p>
<p>Filename: libraries/Session.php</p>
<p>Line Number: 675</p>
Run Code Online (Sandbox Code Playgroud)
第一个警告生成的输出将触发第二个警告(即:无法修改标头信息).理论上,如果你解决了第一个警告,第二个应该自动修复.
打开system/core/Input.php
并在#351行替换:
$this->ip_address = $_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)
有:
$this->ip_address = $this->server('remote_addr');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9368 次 |
最近记录: |