Signatur
Beschreibung
posix_ttyname() gibt den vollständigen Pfadnamen des Terminal-Devices zurück, das mit dem angegebenen Dateideskriptor verknüpft ist – zum Beispiel /dev/pts/0 oder /dev/tty1. Dies ist die PHP-Entsprechung der POSIX-Funktion ttyname(3).
Die Funktion ist nützlich, wenn ein Skript im Kontext eines Terminal-Prozesses läuft (z. B. über die CLI) und den konkreten Terminal-Gerätenamen ermitteln soll. Typische Anwendungsfälle sind Systemadministrations-Werkzeuge, Diagnoseskripte oder Anwendungen, die terminal-spezifische Konfigurationen vornehmen müssen.
Als Argument kann entweder ein PHP-resource (wie STDIN, STDOUT, STDERR) oder eine ganze Zahl übergeben werden, die einen Dateideskriptor auf Betriebssystemebene repräsentiert (0 = stdin, 1 = stdout, 2 = stderr). Die Funktion steht nur auf POSIX-kompatiblen Systemen (Linux, macOS, BSD) zur Verfügung und ist unter Windows nicht verfügbar.
Gibt die Funktion false zurück, war der übergebene Deskriptor kein Terminal oder ein Fehler ist aufgetreten. Den genauen Fehlergrund liefert posix_get_last_error() in Verbindung mit posix_strerror().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $fd Pflicht | resource|int | Dateideskriptor als PHP-resource (z. B. STDIN, STDOUT, STDERR) oder als ganze Zahl (0, 1, 2 für stdin/stdout/stderr). Der Deskriptor muss mit einem Terminal-Device verknüpft sein. |
Rückgabewert
string zurück (z. B. /dev/pts/2). Ist der Deskriptor kein Terminal oder tritt ein Fehler auf, wird false zurückgegeben.Beispiele
Terminal-Gerätename für STDIN ermitteln
<?php
// Skript über die CLI ausführen: php script.php
if (posix_isatty(STDIN)) {
$ttyName = posix_ttyname(STDIN);
echo "Verbundenes Terminal-Device: " . $ttyName . PHP_EOL;
} else {
echo "STDIN ist kein Terminal." . PHP_EOL;
}
Gerätename über numerischen Dateideskriptor und Fehlerbehandlung
<?php
// Dateideskriptor 1 entspricht STDOUT
$ttyName = posix_ttyname(1);
if ($ttyName === false) {
$errno = posix_get_last_error();
echo "Fehler " . $errno . ": " . posix_strerror($errno) . PHP_EOL;
} else {
echo "STDOUT-Terminal: " . $ttyName . PHP_EOL;
}
// Beispiel mit STDERR (Deskriptor 2)
$stderrTty = posix_ttyname(STDERR);
echo "STDERR-Terminal: " . ($stderrTty ?: 'kein Terminal') . PHP_EOL;
// Wichtig · Fallstricke
Plattformverfügbarkeit: posix_ttyname() ist nur auf POSIX-kompatiblen Systemen verfügbar (Linux, macOS, BSD). Unter Windows steht die Funktion nicht zur Verfügung. Die POSIX-Erweiterung muss kompiliert und aktiviert sein.
Webserver-Kontext: Im Webserver-Betrieb (z. B. Apache, Nginx) ist in der Regel kein Terminal zugeordnet, weshalb die Funktion dort false zurückgibt. Sie ist primär für CLI-Skripte sinnvoll.
Fehlerdiagnose: Bei einem Rückgabewert von false sollte stets posix_get_last_error() und posix_strerror() zur Fehlerdiagnose verwendet werden.