¿Y si quitas el @ de mkdir()?
Digo, eso oculta un posible error, y si también activas el reporte de errores pues mejor.
A simple vista, y si dices que está bien tu código entonces lo único que puede fallar serían permisos, ¿pero como vamos a saber nosotros si ocultas los errores?