Vorrei sviluppare un server FTP in PHP (principalmente per capirne di più di come funziona il protocollo FTP e secondariamente per customizzarlo per i miei scopi)

Mi sto imbattendo in un problema con i comandi LIST + PASV ricevuti dal client.

Il problema che ho è dato dal fatto che riesco a re-istanziare la connessione su una "porta dati" (presa random in un range predefinito) ma quando tento di accettare la comunicazione sulla nuova porta, mi restituisce un errore.

Molto probabilmente c'è qualcosa fuori posto nella sequenza di comandi e il vostro aiuto è apprezzato.

Il codice del ftp.server è allegato. (NOTA: al momento l'ho sviluppato/debuggato solo per Linux. Il server si mette in ascolto sulla porta :2121 e qualsiasi utente con qualsiasi password si può collegare).

Quel che non capisco è come faccio ad accettare la connessione sulla porta per la comunicazione passiva.
Quando eseguo il comando

Codice PHP:
socket_accept($cli); 
(dopo il socket_bind e socket_listen) ricevo questo errore:
PHP Warning: socket_accept(): unable to accept incoming connection [11]: Resource temporarily unavailable in (...)
Warning: socket_accept(): unable to accept incoming connection [11]: Resource temporarily unavailable in (...)
Grazie per ogni suggerimento.

Servisse, allego anche il log lato server ed il log del client (FileZilla).

ftp-server.zip