PHP爆炸:脚本在Windows上运行,而不是在Debian上运行

时间:2015-09-28 08:22:26

标签: php windows foreach debian explode

我有一个脚本可以在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)。仍然似乎没有工作,因为$ i返回NULL。

2 个答案:

答案 0 :(得分:1)

您可能会发现使用起来更容易

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

关于案例$i = explode(' ', $x); - 它可能也有点不同。最好使用preg_split(",\s+,", $x);之类的东西,但取决于确切的文件内容。

感谢。

答案 1 :(得分:0)

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

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