为什么apache在找到CLRF而不是LF时会感到困惑?

时间:2016-02-17 13:59:39

标签: php git apache laravel

我在使用宅基地开发基于laravel的网站的win 10环境中工作。我在git中将autoclrf设置为true。另外,我在" windows侧"上使用git。的设置。这意味着,当文件被提交到repo时,CLRF将转换为LF,而当它们被检出时,反之亦然。问题是,位于ubuntu中的apache服务于驻留在windows中的脚本。当它发现时,为什么它不会混淆脚本有窗口式行结尾而不是LF?

1 个答案:

答案 0 :(得分:3)

这主要是因为PHP在大多数情况下对LFCR+LF之间的差异不敏感,这是有道理的,因为它使用the same lexer on Windows and Unix platforms所以它需要处理这两种类型的文件。

词法分析器的小代表性代码段;

if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {                   \
    CG(zend_lineno)++;                                                  \
}

如您所见,它在同一代码库中处理LFCR+LF