我有一个脚本可以在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。
答案 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的行尾并且无法正确地分解文件,反之亦然。