header() error not shown in php

£可爱£侵袭症+ 提交于 2019-12-04 06:22:22

问题


I wrote a PHP program, I use session_start() and header() functions, I know I should use this functions before I sending anything to client. it's ok, but for test I send a test message to client with echo "test"; before using header(), but I didn't get any error and header function work without any problem !

In previous versions of PHP at this time I will got a message like :

Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:22) in /some/file.php on line 60

I wan't to know why I didn't get any error message ?!

My php version is 5.3.1 and error_reporting is on E_ALL


回答1:


You don't see the error because
a. output buffering is on
b. the server ignores your error_reporting function because something else instructs it otherwise run phpinfo(); and see what it says there about output buffering and about error_reporting.




回答2:


This might be possible because you write into an output buffer (ob_start) which doesn't actually return anything to the client until you explicitly flush the buffer (ob_flush or ob_end_*) or the script ends.

The fact that you can't send headers after you begun writing the body part of your HTTP response is not a php but a HTTP protocol limitation, so this cannot be version specific either.

Many frameworks like the Zend Framework use output buffers so a developer doesn't need to care about the order.




回答3:


I found the problem, I don't use any FrameWork.

the problem was error_reporting('E_ALL');

I wrote this code on first of my program, and so PHP didn't return any errors ! I deleted this line and I get the errors !

This is kidding because this line said to PHP to show ALL errors ! I don't know why PHP don't show any errors.



来源:https://stackoverflow.com/questions/13508426/header-error-not-shown-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!