为什么PHP文件一般没有结束标记

对于经常开发PHP的程序员来说,习惯性的文件末尾不加结束符号 “?>”,一开始,并没有理解这样做的目的,只是那些前辈告诫你:一定不要加上结束符哦,却从来不问个为什么,后来才知道原因:
任何一个PHP开发的项目,都不可能只有一个PHP文件,常见的方法是把模块文件,配置文件,函数文件分开到不同的目录,使用时,通过require或include函数加载进来,然而一些PHP的头函数(session_startheader等等)是不允许在函数之前出现空格的(注意这里指的空格不包括PHP标记内的空格,因为解释时会自动忽略),一旦加上了结束符号,当文件被包含时,则很容易产生空格,如果此时使用了头函数,则会报错!
例如,在使用header()函数来重定向(redirect)时,如果在其前面某个包含文件中 ?> 后面不小心加上了空格就会出现错误。

摘自(有改动):http://sibyl-pisces.iteye.com/blog/1600745