Start · Sprachen · PHP · Referenz · stream_context_get_options

stream_context_get_options

Funktion

Gibt alle gesetzten Optionen eines Stream-Kontexts als assoziatives Array zurück.

seit PHP 4.3.0 Kategorie: io

Signatur

stream_context_get_options(resource $context): array

Beschreibung

stream_context_get_options() liest alle Optionen aus, die einem Stream-Kontext (erstellt mit stream_context_create() oder stream_context_set_option()) zugewiesen wurden. Der Rückgabewert ist ein verschachteltes assoziatives Array, das nach Wrapper (z. B. http, ssl, ftp) und den jeweiligen Optionsschlüsseln strukturiert ist.

Die Funktion ist besonders nützlich zum Debuggen und Prüfen, welche Konfiguration ein Kontext aktuell enthält – etwa bevor er an fopen(), file_get_contents() oder Socket-Funktionen übergeben wird. So können Fehler durch fehlende oder falsche Optionen frühzeitig erkannt werden.

Typische Einsatzszenarien sind HTTP-Requests mit benutzerdefinierten Headern oder Timeouts, SSL-Verbindungen mit Zertifikatspfaden sowie FTP-Übertragungen mit spezifischen Transfer-Einstellungen. Durch das Auslesen der Optionen lässt sich sicherstellen, dass alle gesetzten Parameter korrekt übernommen wurden.

Parameter

Name Typ Default Beschreibung
$context Pflicht resource Eine gültige Stream-Kontext-Ressource, wie sie z. B. von stream_context_create() erzeugt wurde.

Rückgabewert

Typ
array
Beschreibung
Ein verschachteltes assoziatives Array der Form ['wrapper' => ['option' => wert]]. Wurden noch keine Optionen gesetzt, wird ein leeres Array zurückgegeben.

Beispiele

HTTP-Kontext-Optionen auslesen

<?php
$options = [
    'http' => [
        'method'  => 'POST',
        'header'  => "Content-Type: application/json\r\n",
        'content' => json_encode(['key' => 'value']),
        'timeout' => 10,
    ],
];

$context = stream_context_create($options);

// Optionen des Kontexts auslesen
$current = stream_context_get_options($context);
print_r($current);
Array ( [http] => Array ( [method] => POST [header] => Content-Type: application/json [content] => {"key":"value"} [timeout] => 10 ) )

SSL-Optionen eines Kontexts prüfen

<?php
$context = stream_context_create([
    'ssl' => [
        'verify_peer'       => true,
        'verify_peer_name'  => true,
        'cafile'            => '/etc/ssl/certs/ca-certificates.crt',
    ],
]);

$opts = stream_context_get_options($context);

if (!empty($opts['ssl']['verify_peer'])) {
    echo "SSL-Peer-Verifizierung ist aktiv.\n";
}

echo 'CA-Datei: ' . ($opts['ssl']['cafile'] ?? 'nicht gesetzt') . "\n";
SSL-Peer-Verifizierung ist aktiv. CA-Datei: /etc/ssl/certs/ca-certificates.crt

Kontext ohne Optionen gibt leeres Array zurück

<?php
$context = stream_context_create();
$opts = stream_context_get_options($context);
var_dump($opts);
array(0) { }

// Wichtig · Fallstricke

Sicherheitshinweis: Wenn SSL-Kontexte verwendet werden, sollten die Optionen verify_peer und verify_peer_name immer auf true gesetzt sein. Mit stream_context_get_options() lässt sich das vor dem eigentlichen Request programmatisch überprüfen.

Die Funktion gibt ausschließlich Optionen zurück (Wrapper-Parameter). Kontext-Parameter wie notification oder blocking werden separat über stream_context_get_params() abgerufen.