Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do some scripts omit the closing PHP tag, '?>'? [duplicate]

People also ask

What happens if you dont close a PHP tag?

If it's a PHP file that contains no HTML, then don't close the tag. This stops you from accidentally adding whitespace at the end of the file, therefore invoking browser output, and by extension headers, etc, which can cause a world of pain. Show activity on this post.

What is the correct opening tag and close tag for PHP scripts?

php and ?>. These are called PHP's opening and closing tags. Statements witihn these two are interpreted by the parser. PHP script within these tags can be embedded in HTML document, so that embedded code is executed on server, leaving rest of the document to be processed by client browser's HTML parser.

Do I have to close PHP?

For files that contain only PHP code, the closing tag ( ?> ) is never permitted. It is not required by PHP, and omitting it prevents the accidental injection of trailing white space into the response.


Well, omitting the closing tag is just one solution for avoiding blanks and other characters at the end of file. For example any char which is accidentally added behind the closing tag would trigger an error when trying to modify header info later.

Removing the closing tag is kind of "good practice" referring to many coding guidelines.


From PHP: Instruction Separation

The closing tag of a PHP block at the end of a file is optional, and in some cases omitting it is helpful when using include() or require(), so unwanted whitespace will not occur at the end of files, and you will still be able to add headers to the response later. It is also handy if you use output buffering, and would not like to see added unwanted whitespace at the end of the parts generated by the included files.


php.net on PHP tags:

If a file is pure PHP code, it is preferable to omit the PHP closing tag at the end of the file. This prevents accidental whitespace or new lines being added after the PHP closing tag, which may cause unwanted effects because PHP will start output buffering when there is no intention from the programmer to send any output at that point in the script.


They do it to avoid risking to have whitespaces after the closing tag which may stop headers to work.

This is, of course, true for PHP-only files.