Start · Sprachen · PHP · Referenz · svn_mkdir

svn_mkdir

Funktion

Erstellt ein Verzeichnis in einer Subversion-Arbeitskopie oder direkt im Repository.

seit PHP 0.1 Kategorie: misc

Signatur

svn_mkdir(string $path, string $log_message = ''): bool

Beschreibung

svn_mkdir() ist Teil der PECL-Erweiterung svn und legt ein neues Verzeichnis unter dem angegebenen Pfad an — entweder in einer lokalen Arbeitskopie (Working Copy) oder direkt in einem Subversion-Repository über eine Repository-URL (svn+ssh://, http://, file:// usw.).

Wird ein lokaler Pfad übergeben, entspricht dies dem SVN-Kommando svn mkdir <pfad> ohne sofortigen Commit — das Verzeichnis wird nur zur Versionsverwaltung vorgemerkt. Wird eine Repository-URL angegeben, wird das Verzeichnis direkt im Repository angelegt; in diesem Fall ist der Parameter log_message zwingend erforderlich, da ohne Commit-Nachricht der Vorgang fehlschlägt.

Die Funktion ist nützlich, wenn PHP-Anwendungen automatisiert Repository-Strukturen aufbauen oder Verzeichnisse im Rahmen eines Deployment- oder Build-Prozesses anlegen müssen, ohne auf die Kommandozeile zurückgreifen zu müssen.

Beachte, dass die svn-Erweiterung über PECL installiert werden muss und nicht standardmäßig in PHP enthalten ist. Außerdem muss auf dem Server eine kompatible Subversion-Bibliothek (libsvn) vorhanden sein.

Parameter

Name Typ Default Beschreibung
$path Pflicht string Lokaler Dateisystempfad innerhalb einer Arbeitskopie oder eine vollständige Repository-URL. Bei einer URL wird das Verzeichnis sofort im Repository erstellt und erfordert eine log_message.
$log_message string Commit-Nachricht, die beim direkten Anlegen im Repository verwendet wird. Bei lokalen Pfaden wird dieser Parameter ignoriert; bei Repository-URLs ist er praktisch verpflichtend, da viele Server leere Commit-Nachrichten ablehnen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Verzeichnis erfolgreich erstellt wurde, andernfalls false. Im Fehlerfall (z. B. Pfad existiert bereits, fehlende Berechtigungen, ungültige URL) wird zusätzlich ein PHP-Fehler ausgegeben.

Beispiele

Verzeichnis in lokaler Arbeitskopie anlegen

<?php
// Voraussetzung: PECL-Erweiterung "svn" ist geladen
$workingCopyPath = '/var/www/mein-projekt/trunk/neuer-ordner';

if (svn_mkdir($workingCopyPath)) {
    echo "Verzeichnis erfolgreich in der Arbeitskopie erstellt.\n";
    echo "Führe jetzt svn_commit() aus, um es ins Repository zu übernehmen.";
} else {
    echo "Fehler beim Erstellen des Verzeichnisses.";
}
Verzeichnis erfolgreich in der Arbeitskopie erstellt. Führe jetzt svn_commit() aus, um es ins Repository zu übernehmen.

Verzeichnis direkt im Repository anlegen (URL)

<?php
// Direktes Anlegen im Repository über URL — kein Checkout nötig
$repoUrl    = 'svn+ssh://svn.example.com/repos/mein-projekt/branches/feature-xyz';
$logMessage = 'Neuen Feature-Branch-Ordner angelegt';

if (svn_mkdir($repoUrl, $logMessage)) {
    echo "Verzeichnis im Repository erfolgreich erstellt.";
} else {
    echo "Fehler: Verzeichnis konnte nicht erstellt werden.\n";
    echo "Prüfe URL, Berechtigungen und ob das Verzeichnis bereits existiert.";
}
Verzeichnis im Repository erfolgreich erstellt.

// Wichtig · Fallstricke

Sicherheitshinweis: Werden Pfade oder URLs aus Benutzereingaben zusammengebaut, müssen diese sorgfältig validiert und bereinigt werden, um Path-Traversal-Angriffe (../) oder das Anlegen unerwünschter Verzeichnisse im Repository zu verhindern.

PECL-Abhängigkeit: Die svn-Erweiterung ist nicht Bestandteil der PHP-Kerninstallation. Sie muss separat via PECL (pecl install svn) installiert und in der php.ini aktiviert werden. Auf modernen Systemen kann die Kompatibilität mit neueren PHP-Versionen eingeschränkt sein — prüfe die PECL-Seite auf aktuelle Unterstützung.

Wenn das Verzeichnis an einer Repository-URL bereits existiert, schlägt der Aufruf fehl. Eine Überprüfung via svn_info() vor dem Aufruf kann unnötige Fehler vermeiden.