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