El error está aquí
Si falla esto, fallará lo demás porque fwrite y fclose necesita que le pases como parámetro un manejador... Al fallar
fopen devuelve
FALSE (boolean).
expects parameter 1 to be resource, boolean given
Le estás pasando un boolean y necesitas pasarle un resource... Los errores describen todo... Empieza por quitar la arroba
@.
Saludos.