Windows と Linux では行末が異なります。\r\n そして\n .そのため、ファイルが読み取られると、ファイルの内容が異なります。
改行なしのテキスト ファイルまたはバイナリ ファイルをアップロードしてみてください。また、読み取ったバイト数の違いも確認してください。次のファイルの改行数と同じにする必要があります。
わかりました、質問に対する答えが見つかりました。Windows と Linux で同じコードに対して 2 つの異なるハッシュが生成された理由はまだわかりません
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
ここで試したのは、上記のコードを次のコードに置き換えたことです
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newname);
"Stored in: " . "upload/" . $_FILES["file"]["name"];
$image = "upload/" . $newname;
$sign = md5_file($image);// Changed here
このことから、 md5()
で生成された場合、ハッシュ値は同じである可能性があると思います しかし、この関数がファイルを入力として受け入れる場合、ハッシュ値の計算方法が異なります。これが PHP 側の問題なのか、実際に OS レベルの問題なのかはわかりませんが、md5_file()
を使用し続けると ファイルのハッシュを生成するために、別のハッシュを取得しません。