从文档(R2009a,Windows):
在UNIX系统上,二进制和文本模式是相同的.
在Windows系统上,二进制和文本模式是不同的.如果您不确定哪种模式最适合您的文件,请使用二进制模式.默认情况下,
fopen打开文件以进行二进制读访问.在二进制模式下,读写操作以相同的方式处理所有字符.在文字模式中:
遇到回车后跟换行符的读操作会从输入中删除回车符.
写入操作在输入中的任何换行符之前插入回车符.
UNIX版本(R2009b)继续添加(in doc fopen):
为获得更好的性能,请勿使用文本模式.
从 PHP 文档中窃取[是的,这是一种不同的语言,但我们正在讨论 filemode 参数,所以它不应该有任何不同]
Windows 提供了一个文本模式转换标志('t'),在处理文件时它将透明地将 \n 转换为 \r\n。相反,您还可以使用“b”强制二进制模式,这不会转换您的数据。要使用这些标志,请将“b”或“t”指定为模式参数的最后一个字符。
....
同样,为了可移植性,强烈建议您重新编写使用或依赖“t”模式的代码,以便它使用正确的行结尾和“b”模式。
http://php.net/manual/en/function.fopen.php