微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP爆炸:脚本工作在Windows上,而不是在Debian上

我有一个脚本,它完全在Windows上工作,而不是在Debian上。 两个运行相同的PHP版本,我似乎无法弄清楚为什么它不能在Debian上工作。

$content = file_get_contents('ua.log'); $arr = explode(PHP_EOL,$content); foreach($arr as $x) { $i = explode(' ',$x); if($i[11] == '"user/agent1.0"'){ $ips[] = $i[0]; } else{ }; };

我已经检查了权限并使用了长目录(/var/www/ua.log)。 仍然似乎没有工作,因为$我返回NULL。

您可能会发现它更容易使用

foreach (file("/some/file.txt",FILE_IGnorE_NEW_LInes) as $x) { .... }

关于这个情况$i = explode(' ',$x); – 它可能也有点不同。 最好使用像preg_split(",s+,",$x); ,但取决于确切的文件内容

谢谢。

除了@ Kayasax对Linux文件系统区分大小写 (即Hello.txt与hello.txt不是同一个文件)的评论之外,还有一点需要注意。

在Windows上, PHP_EOL将认为rn ,而在Linux上则仅为n 。 因此,如果文件是在Windows上创建的,并且在Linux上运行您的代码,则可能会尝试查找Linux的行尾并且无法正确地分解文件,反之亦然。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐