Start · Sprachen · PHP · Referenz · svn_repos_create

svn_repos_create

Funktion

Erstellt ein neues Subversion-Repository an einem angegebenen Pfad und gibt eine Repository-Ressource zurück.

seit PHP 0.1.0 Kategorie: misc

Signatur

svn_repos_create(string $path, array $config = [], array $fsconfig = []): resource|false

Beschreibung

svn_repos_create() legt ein neues Subversion-Repository (SVN-Repository) im Dateisystem an. Die Funktion gehört zur PECL-Erweiterung svn und kapselt die entsprechende Funktion der Subversion-Bibliothek svn_repos_create(). Das Repository wird im angegebenen Verzeichnis angelegt; dieses darf noch nicht existieren oder muss leer sein.

Mit dem optionalen Parameter config lässt sich die allgemeine Konfiguration des Repositories anpassen (z. B. Pfad zur SVN-Konfigurationsdatei). Über fsconfig können Einstellungen für das zugrunde liegende Dateisystem (FSFS oder BDB) übergeben werden, etwa der Typ des Backends.

Die Funktion wird hauptsächlich in administrativen PHP-Skripten eingesetzt, die automatisiert neue Repositories anlegen sollen – beispielsweise in Hosting-Umgebungen oder bei der automatischen Projekterstellung. Der Rückgabewert ist eine Ressource, die für weitere Repository-Operationen genutzt werden kann.

Die Erweiterung muss explizit installiert sein (pecl install svn), da sie nicht im PHP-Kern enthalten ist. Auf modernen Systemen ist Subversion zugunsten von Git weitgehend verdrängt worden; dennoch ist die Funktion in Legacy-Umgebungen relevant.

Parameter

Name Typ Default Beschreibung
$path Pflicht string Absoluter oder relativer Dateisystempfad, an dem das neue Repository erstellt werden soll. Das Verzeichnis darf noch nicht existieren oder muss leer sein.
$config array [] Assoziatives Array mit allgemeinen Konfigurationsoptionen für das Repository (z. B. Pfad zur SVN-Konfiguration). Wird selten benötigt und kann leer gelassen werden.
$fsconfig array [] Assoziatives Array mit Dateisystem-spezifischen Konfigurationsoptionen, etwa zur Auswahl des Storage-Backends (SVN_FS_CONFIG_FS_TYPE: 'fsfs' oder 'bdb').

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine SVN-Repository-Ressource zurück, die für weitere Operationen (z. B. svn_repos_open()) verwendet werden kann. Im Fehlerfall wird false zurückgegeben.

Beispiele

Einfaches Repository anlegen

<?php
// Pfad zum neuen Repository
$repoPath = '/var/svn/mein-projekt';

$repo = svn_repos_create($repoPath);

if ($repo === false) {
    echo 'Fehler: Repository konnte nicht erstellt werden.';
} else {
    echo 'Repository erfolgreich erstellt unter: ' . $repoPath;
}
?>
Repository erfolgreich erstellt unter: /var/svn/mein-projekt

Repository mit FSFS-Backend explizit anlegen

<?php
// FSFS als Dateisystem-Backend explizit konfigurieren
$repoPath = '/var/svn/neues-projekt';

$fsconfig = [
    SVN_FS_CONFIG_FS_TYPE => SVN_FS_TYPE_FSFS,
];

$repo = svn_repos_create($repoPath, [], $fsconfig);

if ($repo !== false) {
    echo 'FSFS-Repository erstellt: ' . $repoPath . PHP_EOL;
    // Weitere Operationen mit $repo möglich
} else {
    echo 'Erstellung fehlgeschlagen.' . PHP_EOL;
}
?>
FSFS-Repository erstellt: /var/svn/neues-projekt

// Wichtig · Fallstricke

Sicherheitshinweis: Der übergebene $path sollte niemals direkt aus Benutzereingaben stammen, ohne zuvor sorgfältig validiert und bereinigt zu werden. Andernfalls kann es zu Path-Traversal-Angriffen kommen, bei denen ein Angreifer Repositories an beliebigen Stellen im Dateisystem anlegen kann.

Berechtigungen: Der PHP-Prozess (z. B. www-data) benötigt Schreibrechte im übergeordneten Verzeichnis. Das neu erstellte Repository sollte anschließend mit geeigneten Dateisystemberechtigungen gesichert werden, um unautorisierten Zugriff zu verhindern.

Verfügbarkeit: Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung svn installiert und aktiviert ist. Sie kann mit pecl install svn nachinstalliert werden. Unter manchen Linux-Distributionen existiert auch ein Paket wie php-svn.

Deprecation: Subversion gilt in vielen Umgebungen als veraltet. Für neue Projekte wird der Einsatz von Git empfohlen.