1.- No entiendo que te compliques tanto; si el servidor del juego y de la web están en el mismo equipo (es decir, si son el mismo), no tienes más que editar el archivo simplemente, por lo que lo de resubirlo me parece innecesario.
Por otro lado, yo lo habría hecho así lo de añadir al fichero el usuario que se registra
Código PHP:
$white=fopen("white-list.txt",a);
$usr2 = "\r\n".$usr
fputs($white,$usr2);
fclose($white);
Por otro lado, si no son el mismo servidor, tendrías que complicarte bastante más para poder leer el archivo.
P.D: revistando tu código... no tienes definido MODO, y no utilizas el PASV que definiste... échale un vistazo a eso ;)
P.D2: Ahora me doy cuenta de lo que querías hacer (las prisas son malas).
No sé mucho de ftp con php, así que volveré a editar el post en un rato con una solución sacada de la manga :p
EDITO:
Como dije antes, nunca había usado FTP con PHP, pero mirando en internet cómo funciona el asunto, esto debería funcionar:
Código PHP:
define("SERVER","host_remoto");
define("PORT",21);
define("USER","user");
define("PASSWORD","********");
$id_ftp=ftp_connect(SERVER,PORT);
ftp_login($id_ftp,USER,PASSWORD);
ftp_pasv($id_ftp,true);
$archivo="white-list.txt";
ftp_put($id_ftp,$archivo,$archivo,FTP_BINARY);
ftp_close($id_ftp);
Sinceramente, dudo que funcione, ya que no lo he testeado ni nada por el estilo.
Y... me sorprende que no pongas una ruta más concreta para subir el archivo.
algo como
ftp_put($id_ftp,$archivo,"www\"$archivo,FTP_BINARY );
o
ftp_put($id_ftp,$archivo,"public_html\"$archivo,FT P_BINARY);
Ya que cuando me conecto por FTP a un servidor, subo los archivos a una carpeta con uno de esos nombres normalmente (también, yo soy más de web que de juegos)