Dices que te leíste el manual... entonces me pregunto: ¿¿cómo te lo leíste??
Porque des de luego mucha atención no le prestaste XDD
Código PHP:
/*...*/ $file=fopen("archivo.xml","w+");
fwrite ($file,$buffer);
chmod($file, 0777);
/*...*/
Si hubieses leído el manual prestándole un poquito de atención sabrías que $file sólo contiene un resource id, y no el nombre de ningún archivo. Y estás cambiando los permisos de un resource id, lógico que te dé error. Sabrías eso si leyeses el error, como te decía. Yo la verdad es que no sé que tipo de lógica usa la gente que cree que no leyendo el error lo entenderá mejor...
Debería ser
Código:
chmod("archivo.xml",0777);
y eso mientras NO esté abierto el archivo con funciones de lectura/escritura/etc. de archivos para asegurar que luego el fclose(); no le cambie los permisos pese a que no debería.