Отличия php md5_file между Windows и Linux

Я отправляю файл из Windows в Linux (используя ftp), а затем хочу проверить передачу, сравнив хэш-коды md5 в файлах. Они всегда разные, по-видимому, потому, что в Windows и Linux разные линды.

В качестве обходного пути я использовал php в Linux для чтения файла в двоичном виде, затем str_replace("\n","\r\n",$filetext), чтобы сделать его похожим на Windows, и md5 (в php), чтобы создать хэш-код. Но все равно не совпадает. Что я делаю не так, или есть лучший способ?


person Rick Holt    schedule 10.11.2015    source источник
comment
если вы не открываете файл в Linux и не изменяете его, хэши должны быть одинаковыми. Нет автоматического преобразования конца строки просто при копировании/загрузке файла.   -  person Jonathan Kuhn    schedule 10.11.2015
comment
Передача по FTP в бинарном режиме, а не в ascii. ascii преобразует окончания строк @JonathanKuhn.   -  person AbraCadaver    schedule 10.11.2015
comment
@AbraCadaver а, спасибо. Я обычно использую только авто и никогда не было проблем.   -  person Jonathan Kuhn    schedule 10.11.2015


Ответы (1)


Вы можете использовать md5 вместо md5_file:

$data = file_get_contents($filename);
$arr = explode(PHP_EOL, $data); 
$result = md5(serialize($arr));
person toor    schedule 07.12.2015