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