Mejor usa la función:
move_uploaded_file()
Sobre todo si estás intentando hacer un proceso de "upload" de archivos donde se mueve el archivo "temporal" que PHP usa y almacena en (php.ini): upload_tmp_dir = ..... para luego moverlo a su destino definitivo.
No sé si usas el array superglobal: $_FILES .. pero deberías usarlo por seguridad y estadarizar el código ...
Tampoco te guies en la extensión de tu archivo para validaciones .. eso NO es seguro!. Usa $_FILES['archivo']['type'] que te devuelve el formato MIME del archivo (algo tipo image/jpeg o similar por ejemplo para un .jpg ..). Eso evita que te "peguen" el cambianzo de un ".exe" por ejemplo y te lo "suban" pasando por un .jpg ..
Revisa la documentación oficial al respecto:
http://tr2.php.net/manual/en/features.file-upload.php
Un saludo,