Cuando se efectúa la conversión a valor numérico desde un string, se interpreta en la base por defecto (base 10). Para que lo interprete como un número octal, debes usar, por ejemplo, la función
intval:
Código PHP:
$perm = "0777"; // Valor recibido del formulario
$modo = intval( $perm, 8 ); // Converision a entero octal
mkdir( $dir, $modo );
Aún así, según el servidor, es posible que encuentres que los permisos asignados acaben siendo 755. Si fuera el caso, deberías aplicar de nuevo los permisos:
Código PHP:
chmod( $dir, $modo );
Un saludo