The underlying sockpair() function does only support AF_UNIX at least on BSD and Linux.(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_create_pair — Erzeugt ein Paar nicht zu unterscheidender Sockets und speichert sie in einem Array
   socket_create_pair() erzeugt zwei nicht unterscheidbare,
   verbundene Sockets und speichert sie im Array pair.
   Diese Funktion wird allgemein bei der Interprozesskommunikation (IPC)
   verwendet.
  
domain
       Der Parameter domain bestimmt die
       Protokollfamilie, die von den Sockets benutzt wird. Eine komplette
       Liste finden Sie bei der Funktion socket_create().
      
type
       Der Parameter type bestimmt den
       Kommunikationstyp, den die Sockets verwenden sollen. Eine komplette
       Liste finden Sie bei der Funktion socket_create().
      
protocol
       Der Parameter protocol legt das spezifische
       Protokoll fest, das vom zurückgegebenen Socket für die Kommunikation
       innerhalb der angegebenen domain benutzt werden
       soll. Der passende Wert kann ermittelt werden, indem der Name an die
       Funktion getprotobyname() übergeben wird. Wenn TCP
       oder UDP gewünscht werden, können auch die entsprechenden Konstanten
       SOL_TCP oder SOL_UDP benutzt
       werden.
      
Eine vollständige Liste aller unterstützter Protokolle finden Sie bei der Funktion socket_create().
pairReferenz auf das Array, in das die beiden Socket-Instanzen eingefügt werden.
| Version | Beschreibung | 
|---|---|
| 8.0.0 | pairist nun ein Verweis auf ein Array von
       Socket-Instanzen; vorher war es ein Verweis auf
       ein Array von resources. | 
Beispiel #1 socket_create_pair()-Beispiel
<?php
$sockets = array();
/* Unter Windows muss man AF_INET benutzen */
$domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? AF_INET : AF_UNIX);
/* Socket-Paar erzeugen */
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets) === false) {
    echo "socket_create_pair fehlgeschlagen. Grund: ".socket_strerror(socket_last_error());
}
/* Daten senden und empfangen */
if (socket_write($sockets[0], "ABCdef123\n", strlen("ABCdef123\n")) === false) {
    echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($sockets[0]));
}
if (($data = socket_read($sockets[1], strlen("ABCdef123\n"), PHP_BINARY_READ)) === false) {
    echo "socket_read() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($sockets[1]));
}
var_dump($data);
/* Sockets schließen */
socket_close($sockets[0]);
socket_close($sockets[1]);
?>
Beispiel #2 socket_create_pair()-IPC-Beispiel
<?php
$ary = array();
$strone = 'Nachricht vom Elternprozess.';
$strtwo = 'Nachricht vom Kindprozess.';
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $ary) === false) {
    echo "socket_create_pair() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error());
}
$pid = pcntl_fork();
if ($pid == -1) {
    echo 'Konnte keinen Kindprozess erzeugen.';
} elseif ($pid) {
    /* Elternprozess */
    socket_close($ary[0]);
    if (socket_write($ary[1], $strone, strlen($strone)) === false) {
        echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($ary[1]));
    }
    if (socket_read($ary[1], strlen($strtwo), PHP_BINARY_READ) == $strtwo) {
        echo "Empfangen: $strtwo\n";
    }
    socket_close($ary[1]);
} else {
    /* Kindprozess */
    socket_close($ary[1]);
    if (socket_write($ary[0], $strtwo, strlen($strtwo)) === false) {
        echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($ary[0]));
    }
    if (socket_read($ary[0], strlen($strone), PHP_BINARY_READ) == $strone) {
        echo "Empfangen: $strone\n";
    }
    socket_close($ary[0]);
}
?>
The underlying sockpair() function does only support AF_UNIX at least on BSD and Linux.