Pues que raro, porque probé tu código y funcionó perfecto con las correcciones:
Código PHP:
Ver original<?php
function SubirArchivos($campo_archivo, $ruta, $size, $permitidos) {
// Función para subir archivos mediante PHP
// USO: SubirArchivos($campo_archivo, $ruta, $size, $permitidos);
// @param $campo_archivo = $_FILES['nombre_campo'];
// @param $ruta = "ruta_de_subida_del_archivo";
// @param $size = "tamaño máximo permitido en bytes"
// @param $permitidos = array(array con los tipos de archivos permitidos); (http://www.freeformatter.com/mime-types-list.html#mime-types-list)
// @return: Solo retorna en caso de error
// Obtener el tipo MIME del archivo enviado por el usuario
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime_usuario = $finfo->file($campo_archivo['tmp_name']);
// Comprobar si la ruta tiene permisos para escribir
// Si no se puede escribir en ella, devolvemos error
return "Error: No se puede escribir en el directorio especificado";
}
// Contrastar los tipos MIME
$permitidos = in_array($mime_usuario, $permitidos); // Devolverá true o false
if($permitidos == FALSE) {
// Si el archivo no está en la lista de permitidos, devolvemos error.
return "Error: El archivo enviado no se corresponde a un tipo permitido";
}
// Comprobar que el tamaño no excede el permitido
if ( $campo_archivo['size'] > $size ) {
return "Error: El archivo enviado es mayor de lo permitido";
}
// Si el archivo existe en la ruta, devolvemos error.
if ( file_exists($ruta.$campo_archivo['name']) == TRUE ) { return "Error: Ya existe ese archivo en la ruta definida";
}
// Si el archivo no se puede mover a su ruta, devolvemos error.
return "Error: Problema al subir el archivo";
}
return true;
}
'text/plain',
'image/png'
)));
}
?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="test">
<input type="submit" name="ok">
</form>
Si no te funciona será por algo que no se alcanza a entender con sólo leer tu código, mientras tengas un entorno de desarrollo mal configurado seguirás culpando cualquier cosa.