Allora l'errore è al primo If, alla prima condizione..cioè questa :

if (is_writable($filename)) {

questo if verifica se il file è scrivibile...se va nell'altra condizione nell'if...implica che il file che vuoi scrivere non godei degli opportuni permessi di scrittura.