【发布时间】:2025-11-26 21:30:02
【问题描述】:
当我上传一些 PHP 文件时,我遇到了一些奇怪的问题,即一些 php 文件有 cr+lf EOL 字符,一些有 CR,一些有 LF。
我正在使用 Win8、Filezilla、Notepad++ 和 PHPRunner 进行一些模板化工作(全部存储在保管箱同步文件夹中)。当我处理手工制作的 php 文件时,我有时使用 PHPRunner 来 ftp 文件,有时使用 Filezilla。
当我在 notepad++ 中打开文件时,有时这些行尾似乎会自行更改,我需要进行 notepad++->edit-EOL 转换以将它们仅更改回 unix 样式。
所以这通常不会打扰我(除了它们随机变化的方式有点奇怪),但在 PHP 中,如果您 REQUIRE_ONCE 一个具有不同行尾的文件,它似乎会默默地失败并且没有任何效果。 所以我的问题是
1) 这是 PHP 的预期行为,如果是,有什么方法可以在同一个源文件中接受不同的 EOL 编码?
2) 任何想法为什么我的 EOL 字符可能会被更改?是 Filezilla、notepad++ 还是 dropbox 或 PHPRunner 正在修补? (当我打开文件时,我从来没有看到它们更改的通知,只会在重新启动计算机时发生)
这有点谜,所以想问问有没有其他人遇到过这个
【问题讨论】:
-
你应该展示你尝试过的东西吗?
-
所以看起来 PHP 不喜欢仅 CR 的 EOL。将此更改为 CR+LF 或仅 LF 修复它并且 PHP 可以正常运行。我一生都无法弄清楚为什么我的行尾一直只换成 CR。我的猜测是notepad++在打开文件时会这样做,但检查我设置了unix的选项,实际上无法捕捉到正在发生的这种变化。