When you use PHP to write a website or web page, sometimes you may encounter this error message: PHP Warning: Cannot modify header information. This error is usually caused by trying to modify the HTTP header when outputting the HTTP header to the browser before sending the content. This problem may not seem serious, but it may cause an unpredictable error in your PHP code. This article explains how to resolve this issue.
What is "header information"?
Before understanding this problem, we need to know what "header information" is. "Header information" is some information passed between the browser and the web server. This information includes information about the page's encoding, language, expiration time, cache control, cookies, etc. PHP allows you to modify this information using the header() function.
Cause Analysis
When PHP code needs to use the header() function to modify the HTTP header, PHP's execution engine requires that there be no output before the HTTP header is sent to the browser. In PHP, there are many ways to output, such as echo, print, space, carriage return and line feed, etc. If there is any output before the HTTP headers are sent, PHP will generate a "header information already sent" error. This is why the PHP Warning: Cannot modify header information error occurs.
Solution
There are three ways to solve this problem:
Before outputting the content, you need to ensure that there are no useless characters in the code, such as spaces, carriage returns, line feeds, etc. This is because these characters will also produce output, causing output to exist before the HTTP header is sent, thus triggering the "header information already sent" error.
The ob_start() function opens an output buffer so that all output will be cached in memory, HTTP header will not be sent to the browser. At the end of the PHP code, the ob_end_clean() function clears all buffers and sends all output to the browser.
The method of using the ob_start() and ob_end_clean() functions is as follows:
<?php ob_start(); //Your PHP code header('Location: http://www.example.com/'); ob_end_clean(); ?>
In the above code, the ob_start() function opens a buffer, and the header() function sets the HTTP header. , the ob_end_clean() function clears the buffer and sends the output to the browser.
The way to use the ob_start() and ob_end_flush() functions and the way to use the ob_start() and ob_end_clean() functions similar. The difference is that the ob_end_flush() function sends the contents of the buffer to the browser and closes the buffer. When using this approach, you need to make sure there isn't any useless output before sending it to the browser.
The method is as follows:
<?php ob_start(); //Your PHP code header('Location: http://www.example.com/'); ob_end_flush(); ?>
Summary
When you encounter the error PHP Warning: Cannot modify header information, don’t panic, because it is very easy to solve. Just make sure there is no output before sending the HTTP header, or use the ob_start() and ob_end_clean() functions or the ob_start() and ob_end_flush() functions. This error message is usually a warning rather than a fatal error, so you don't need to panic. As long as you follow the above methods, your PHP code will run normally.
The above is the detailed content of PHP Warning: Cannot modify header information -Solution. For more information, please follow other related articles on the PHP Chinese website!