我在使用宅基地开发基于laravel的网站的win 10环境中工作。我在git中将autoclrf设置为true。另外,我在" windows侧"上使用git。的设置。这意味着,当文件被提交到repo时,CLRF将转换为LF,而当它们被检出时,反之亦然。问题是,位于ubuntu中的apache服务于驻留在windows中的脚本。当它发现时,为什么它不会混淆脚本有窗口式行结尾而不是LF?
答案 0 :(得分:3)
这主要是因为PHP在大多数情况下对LF
和CR+LF
之间的差异不敏感,这是有道理的,因为它使用the same lexer on Windows and Unix platforms所以它需要处理这两种类型的文件。
词法分析器的小代表性代码段;
if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) { \
CG(zend_lineno)++; \
}
如您所见,它在同一代码库中处理LF
或CR+LF
。