Signatur
Beschreibung
xdiff_file_diff_binary ist ein Alias der Funktion xdiff_file_bdiff und erstellt ein binäres Diff zwischen zwei Dateien. Das Ergebnis wird in die durch $dest angegebene Datei geschrieben. Das erzeugte Diff-Format ist binär und kann später mit xdiff_file_patch_binary bzw. dessen Alias xdiff_file_bpatch angewendet werden, um die ursprüngliche Datei in die neue Version zu transformieren.
Im Gegensatz zu textuellen Diffs (wie xdiff_file_diff) eignet sich diese Funktion besonders für Binärdateien wie Bilder, Archive oder kompilierte Dateien, da sie den gesamten Byte-Bereich berücksichtigt und kein zeilenbasiertes Vergleichsverfahren verwendet.
Diese Funktion gehört zur PECL-Erweiterung xdiff, die vor der Verwendung installiert und aktiviert sein muss. Sie ist in Standard-PHP-Installationen nicht enthalten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $old_file Pflicht | string | Pfad zur Ausgangsdatei (ältere Version), mit der verglichen wird. | |
| $new_file Pflicht | string | Pfad zur neuen Datei (neuere Version), die mit der Ausgangsdatei verglichen wird. | |
| $dest Pflicht | string | Pfad zur Ausgabedatei, in der das binäre Diff gespeichert wird. |
Rückgabewert
true zurück, wenn das Diff erfolgreich erstellt und in die Zieldatei geschrieben wurde, andernfalls false.Beispiele
Binäres Diff zweier Dateiversionen erstellen
<?php
// Zwei Versionen einer Binärdatei (z. B. ein Bild) vergleichen
$old = '/var/data/image_v1.png';
$new = '/var/data/image_v2.png';
$diff = '/var/data/image.bdiff';
if (xdiff_file_diff_binary($old, $new, $diff)) {
echo "Binäres Diff erfolgreich erstellt: {$diff}";
} else {
echo "Fehler beim Erstellen des Diffs.";
}
Diff erstellen und anschließend patchen
<?php
$old = '/var/data/config_v1.bin';
$new = '/var/data/config_v2.bin';
$diff = '/tmp/config.bdiff';
$patched = '/tmp/config_patched.bin';
// Diff erzeugen
if (xdiff_file_diff_binary($old, $new, $diff)) {
echo "Diff erzeugt.\n";
// Patch anwenden: alte Datei + Diff => neue Datei
if (xdiff_file_patch_binary($old, $diff, $patched)) {
echo "Patch erfolgreich angewendet.\n";
// Prüfen ob identisch
echo hash_file('sha256', $new) === hash_file('sha256', $patched)
? "Dateien sind identisch.\n"
: "Dateien unterscheiden sich!\n";
}
}
// Wichtig · Fallstricke
Alias: Diese Funktion ist ein direkter Alias von xdiff_file_bdiff. Es wird empfohlen, in neuem Code bevorzugt xdiff_file_bdiff zu verwenden, da Aliase in zukünftigen Versionen der Erweiterung möglicherweise entfernt werden könnten.
PECL-Abhängigkeit: Die xdiff-Erweiterung ist nicht Bestandteil der PHP-Kerninstallation und muss über PECL installiert werden (pecl install xdiff). Ohne diese Erweiterung ist die Funktion nicht verfügbar.
Dateiberechtigungen: Das PHP-Prozess-Konto muss Lesezugriff auf $old_file und $new_file sowie Schreibzugriff auf den Zielordner von $dest besitzen.