Start · Sprachen · PHP · Referenz · ssh2_shell_resize

ssh2_shell_resize

Funktion

Ändert die Größe des Pseudo-Terminals (PTY) eines bestehenden SSH-Shell-Kanals.

Kategorie: http

Signatur

ssh2_shell_resize(resource $channel, int $width, int $height, int $width_px = 0, int $height_px = 0): bool

Beschreibung

ssh2_shell_resize passt die Terminalgröße eines über ssh2_shell() geöffneten Shell-Kanals nachträglich an. Dies ist nützlich, wenn sich die Fenstergröße des lokalen Terminals zur Laufzeit ändert – etwa bei einer interaktiven SSH-Sitzung in einer Web-Anwendung oder einem CLI-Tool.

Die Funktion sendet eine SIGWINCH-ähnliche Benachrichtigung an die Remote-Shell, sodass Anwendungen wie vim, top oder bash ihre Ausgabe korrekt umbrechen und darstellen können. Die Größe kann sowohl in Zeichen (Spalten × Zeilen) als auch optional in Pixeln angegeben werden.

Die Funktion gehört zur PECL-Erweiterung ssh2 (pecl/ssh2) und ist nicht Bestandteil der PHP-Kerninstallation. Sie setzt eine aktive SSH2-Verbindung und einen geöffneten Shell-Kanal voraus.

Parameter

Name Typ Default Beschreibung
$channel Pflicht resource Ein Shell-Kanal-Resource, der zuvor mit ssh2_shell() geöffnet wurde.
$width Pflicht int Neue Breite des Terminals in Zeichenspalten (z. B. 80 oder 132).
$height Pflicht int Neue Höhe des Terminals in Zeichenzeilen (z. B. 24 oder 50).
$width_px int 0 Optionale Breite des Terminals in Pixeln. 0 bedeutet, dass keine Pixelgröße übermittelt wird.
$height_px int 0 Optionale Höhe des Terminals in Pixeln. 0 bedeutet, dass keine Pixelgröße übermittelt wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Größenänderung erfolgreich an den Remote-Server gesendet wurde, andernfalls false.

Beispiele

Terminal-Größe einer SSH-Shell-Sitzung ändern

<?php
// Verbindung aufbauen
$connection = ssh2_connect('example.com', 22);
ssh2_auth_password($connection, 'user', 'geheimesPasswort');

// Shell-Kanal mit initialer Terminalgröße öffnen
$shell = ssh2_shell($connection, 'xterm', null, 80, 24, SSH2_TERM_UNIT_CHARS);

if (!$shell) {
    die('Shell konnte nicht geöffnet werden.');
}

// Etwas abwarten / Arbeit erledigen ...
sleep(1);

// Terminalgröße auf 132×50 Zeichen ändern
$result = ssh2_shell_resize($shell, 132, 50);

if ($result) {
    echo "Terminalgröße erfolgreich auf 132x50 geändert." . PHP_EOL;
} else {
    echo "Fehler beim Ändern der Terminalgröße." . PHP_EOL;
}

fclose($shell);
Terminalgröße erfolgreich auf 132x50 geändert.

Größenänderung mit Pixelangabe

<?php
$connection = ssh2_connect('example.com', 22);
ssh2_auth_agent($connection, 'user');

$shell = ssh2_shell($connection, 'vt100', null, 80, 24, SSH2_TERM_UNIT_CHARS);

if (!$shell) {
    die('Verbindung fehlgeschlagen.');
}

// Neue Größe: 100 Spalten, 40 Zeilen, 1000x800 Pixel
$ok = ssh2_shell_resize($shell, 100, 40, 1000, 800);
echo $ok ? 'Resize OK' : 'Resize fehlgeschlagen';

fclose($shell);
Resize OK

// Wichtig · Fallstricke

PECL-Abhängigkeit: ssh2_shell_resize ist Teil der PECL ssh2-Erweiterung und muss separat installiert werden (pecl install ssh2). Ohne diese Erweiterung steht die Funktion nicht zur Verfügung.

Kanaltyp: Die Funktion funktioniert nur mit Kanälen, die als interaktive Shell mit einem zugewiesenen Pseudo-Terminal geöffnet wurden. Bei Kanälen, die über ssh2_exec() geöffnet wurden und kein PTY besitzen, schlägt der Aufruf fehl.

Sicherheit: Authentifizierungsdaten (Passwörter, Schlüssel) sollten niemals hartcodiert im Quellcode stehen. Nutze Umgebungsvariablen oder sichere Konfigurationsdateien außerhalb des Web-Roots.