Tienes que darle persimos a tu archivo cuando lo subes con chmod() desde PHP. (justo cuando ya lo has copiado hacia su destino definitivo).
Por cierto .. usa en lugar de tus fopen() y fwrite() .. la función:
move_uploaded_file() y los arrays superglobales $_FILES si usas PHP 4.1.0 en adelante ... según se describe en la documentación oficial de PHP:
http://www.php.net/manual/en/features.file-upload.php
Un saludo,