PHP闭合标签"?>"在php中对php分析器是可选的,在一些编程规范里面,php结束符在纯php脚本文件里是必须忽略的,php结束符仅仅用于在php与html混写时表示php代码的结束,而对于纯php文件来说,这个文件结束了,代码就结束了,没必要加上结束符,因为加上结束符会引发很多不必要的麻烦。
倘若加上结束符,那么在结束符之后,包括你看不见的空格或者回车,制表符号,都会作为输出内容会response到客户端上。
在php中,header, setcookie, session_start等函数这些动作之前不能有输出,如果在此之前你include或者require了纯php文件,并且“?>”结束符后面多出了其他看不见的字符,那么将导致程序报错,得不到期望的结果。
所以一般像这种函数报错时,如果排查不出症结所在,那你就要考虑下是不是include或require某个文件其结束标志后存在多余字符。
//说到session,有一次不小心将php文件转化成了“utf-8 无 BOM"格式,这种文件格式会在文件的开头添加一个文件标志,运行时连同这个标志也输出,这也导致session_start()报错,解决的方法是重新创建一个非”utf-8 无 BOM"格式文件。
纯php文件不应该加上“?>”结束标记,同时在php代码末尾插入一段注释来表明这是文件的底部并定位这个文件在这个应用中的相对路径。
实例:
<?php
echo "Here's my code!";
/* End of file myfile.php */
/* Location: ./system/modules/mymodule/myfile.php */