Signatur
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
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 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;
}
?>
// 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.