Kann mq nur zustimmen. Ordentliches FTP Programm besorgen und Berechtigungen für den Ordner, in dem die Webseite (oder das Skript) liegt auf 777 (alle lesen und schreiben und ausführen) setzen.
Aber wie kommst du darauf, dass das irgendwas mit file_put_contents() zu tun hat? In deinem Code kommt die Funktion kein einziges Mal vor.