Windows y Linux tienen finales de línea diferentes, \r\n y \n . Entonces, cuando se lee el archivo, el contenido de los archivos es diferente.
Intente cargar un archivo de texto sin una nueva línea o un archivo binario. También verifique la diferencia en los bytes leídos. Debe ser igual al número de líneas nuevas en el siguiente archivo.
Ok, encontré la respuesta a mi pregunta, todavía no sé por qué se generaron dos hashes diferentes para el mismo código en Windows y Linux
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newname);
"Stored in: " . "upload/" . $_FILES["file"]["name"];
$image = "upload/" . $newname;
$sign = md5(file_get_contents($image));//This is code block that i was implmenting before solution
Lo que probé aquí fue que reemplacé mi código anterior con el siguiente código
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newname);
"Stored in: " . "upload/" . $_FILES["file"]["name"];
$image = "upload/" . $newname;
$sign = md5_file($image);// Changed here
A partir de esto, creo que los valores Hash pueden ser los mismos cuando los genera md5()
pero si esta función acepta el archivo como entrada, los valores hash se calculan de manera diferente, no sé si se trata de un problema del lado de PHP o realmente un problema del nivel del sistema operativo, pero si sigo usando md5_file()
para generar hash de archivo no obtengo hash diferente.