Start · Sprachen · PHP · Referenz · stream_get_wrappers

stream_get_wrappers

Funktion

Gibt eine Liste aller aktuell registrierten Stream-Wrapper als Array zurück.

seit PHP 5.0.0 Kategorie: io

Signatur

stream_get_wrappers(): array

Beschreibung

stream_get_wrappers() liefert ein indiziertes Array mit den Namen aller in der aktuellen PHP-Umgebung registrierten Stream-Wrapper. Zu den typischen Einträgen gehören eingebaute Wrapper wie file, http, ftp, compress.zlib, php sowie gegebenenfalls zusätzlich registrierte benutzerdefinierte Wrapper.

Die Funktion ist besonders nützlich, wenn man prüfen möchte, ob ein bestimmter Wrapper verfügbar ist, bevor man ihn verwendet – etwa um sicherzustellen, dass https-Streams über OpenSSL unterstützt werden oder ob ein eigener Wrapper über stream_wrapper_register() erfolgreich registriert wurde.

Im Gegensatz zu stream_get_filters(), das Stream-Filter auflistet, zeigt diese Funktion ausschließlich Wrapper an, also die Protokollschemata, die vor dem :// in einer URL stehen. Die zurückgegebenen Strings entsprechen exakt den Schema-Namen, mit denen die Wrapper registriert wurden.

Rückgabewert

Typ
array
Beschreibung
Gibt ein indiziertes Array mit den Namen aller registrierten Stream-Wrapper zurück. Das Array ist niemals false – im Extremfall wird ein leeres Array zurückgegeben.

Beispiele

Alle registrierten Wrapper ausgeben

<?php
$wrappers = stream_get_wrappers();
echo "Registrierte Stream-Wrapper:\n";
foreach ($wrappers as $wrapper) {
    echo '  ' . $wrapper . "\n";
}
Registrierte Stream-Wrapper: php file glob data http ftp compress.zlib compress.bzip2 https ftps phar zip

Prüfen ob ein bestimmter Wrapper verfügbar ist

<?php
function isWrapperAvailable(string $scheme): bool {
    return in_array($scheme, stream_get_wrappers(), true);
}

if (isWrapperAvailable('https')) {
    echo "HTTPS-Streams werden unterstützt.\n";
} else {
    echo "HTTPS-Wrapper nicht verfügbar – OpenSSL fehlt möglicherweise.\n";
}

if (isWrapperAvailable('myapp')) {
    echo "Eigener Wrapper 'myapp' ist registriert.\n";
} else {
    echo "Eigener Wrapper 'myapp' ist NICHT registriert.\n";
}
HTTPS-Streams werden unterstützt. Eigener Wrapper 'myapp' ist NICHT registriert.

Benutzerdefinierten Wrapper registrieren und verifizieren

<?php
class MyWrapper {
    public function stream_open(string $path, string $mode, int $options, ?string &$opened_path): bool {
        return true;
    }
}

stream_wrapper_register('myapp', MyWrapper::class);

if (in_array('myapp', stream_get_wrappers(), true)) {
    echo "Wrapper 'myapp' wurde erfolgreich registriert.\n";
}
Wrapper 'myapp' wurde erfolgreich registriert.

// Wichtig · Fallstricke

Plattformunterschiede: Die verfügbaren Wrapper hängen von den beim Kompilieren eingebundenen PHP-Erweiterungen ab. Auf einem System ohne OpenSSL fehlt z. B. der https-Wrapper. Auf Windows können sich die verfügbaren Wrapper ebenfalls von Unix-Systemen unterscheiden.

Tipp: Wenn ein eigener Wrapper mit stream_wrapper_register() registriert wird, erscheint er sofort in der Ausgabe dieser Funktion. Mit stream_wrapper_unregister() lässt er sich wieder entfernen und verschwindet dann auch aus der Liste.