Start · Sprachen · PHP · Referenz · xdiff_file_diff_binary

xdiff_file_diff_binary

Funktion

Alias von <code>xdiff_file_bdiff</code>: Erstellt ein binäres Diff zweier Dateien und speichert das Ergebnis in einer Ausgabedatei.

seit PHP 1.5.0 Kategorie: misc

Signatur

xdiff_file_diff_binary(string $old_file, string $new_file, string $dest): bool

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

Typ
bool
Beschreibung
Gibt 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.";
}
Binäres Diff erfolgreich erstellt: /var/data/image.bdiff

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";
    }
}
Diff erzeugt. Patch erfolgreich angewendet. Dateien sind identisch.

// 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.