Heyho!
Um den Dateiinhalt zu verifizieren (z.B. hinsichtlich FPT-Übertragungsfehler) vergleiche ich die MD5-Hash-Werte der Dateien meines CMS mittels PHPs md5_file()-Funktion.
Es gibt 3 Umgebungen:
* Lokal (Win7, XAMPP, PHP 5.2.9)
* Server 1 (Debian Linux, Apache, PHP 5.2.8)
* Server 2 (Debian Linux, Apache, PHP 5.2.13)
Wichtig: Server 1 und 2 liegen bei _verschiedenen_ Anbietern! Sind also höchstwahrscheinlich anders konfiguriert.
Wenn ich die Hashes meines lokalen Systems mit denen von Server 1 vergleiche meldet das Script, dass alle Dateien identisch sind. Wenn ich die Hashes meines lokalen Systems mit denen von Server 2 allerdings vergleiche, haben ca 500 von 1500 Dateien einen anderen Hash.
Woran kann das liegen? Wohl nicht an Windows/Linux-Komplikationen, denn sonst würde es auf Server 1 ja auch nicht funktionieren - oder?
Was ich bis jetzt festgestellt habe:
* Es sind nur Textdateien betroffen (.php, .js, .css, .tpl), keine Binärdateien (wie z.B. Bilder)
* Es sind sowohl Dateien betroffen die ich erstellt habe, als auch die von Drittanbietern. Wohlbemerkt aber nicht alle Textdateien - wie gesagt, nur ca. ein Drittel.
Bei der Analyse einer der 500 Dateien dachte ich zuerst es läge an Umlauten. Aber als ich eine Datei mal soweit gekürzt habe dass sie nur noch "<div id=...>
</div" (in neuer Zeile!) enthielt, war der Hash weiterhin unterschiedlich. Beim Entfernen des Zeilenumbruchs wurden die Hashs identisch.
Was ich mich jetzt frage:
Liegt es also an den Newlines?
Warum nicht in allen (Text-)Dateien?
Warum nicht auf beiden Servern?
Gibt es eine Einstellung von PHP/Apache die die Behandlung von Newlines beeinflusst?
Warum spielt das überhaupt eine Rolle wenn md5_file() doch binary safe ist? Ich habe es auch nochmal manuell mit fread() und md5($filecontent) geprüft - es macht keinen Unterschied.
Hat jemand eine Idee? Würde mir sehr weiterhelfen!
Vielen Dank schonmal und viele Grüße
Mastershrimp