1. El error que obtienes de $_FILES['document'] ['error'] no representa el error real que generó move_uploaded_file(), únicamente representa el error al recibir el archivo y nada más.
Al ser cero, te está indicando que se subió sin problemas, so, no te confundas tu solo.
2. ¿Ya leíste el manual de move_uploaded_file() o no?
Porque ahí se explican las posibles razones de fallo, que entre otras bien podría ser un tema de permisos, etc.
Cita: Alguien puede decirme dónde está el error.
Lamentablemente no es posible: porque sencillamente no somos adivinos.
Es tu obligación habilitar el reporte de errores y depurar tu código, probablemente ocurra algo ahí y ni te enteras.