posto la mia nuova soluzione:

Codice PHP:
#include <stdlib.h>
#include <stdio.h>

int main(int argcchar** argv){
    
FILE *fs;      /* File sorgente */
    
FILE *fs2;     /* File destinatario */
    
int i=0;       /* Contatore */
    
int j=0;       /* Contatore */
    
char buffer[1024];     /* buffer */
    
    
fs fopen(argv[1],"rb");

    if(
fs == NULL){
        
printf("error open source file: %s\n",argv[1]);
        return -
1;
    }

    
fs2 fopen(argv[2],"wb");

    if(
fs2 == NULL){
        
printf("error open target file: %s\n",argv[2]);
        return -
1;
    }

    while(
fread(&buffer[i],sizeof(char),1,fs) == 1){
        
i++;
    }
    
    while(
j<i){        
        
fwrite(&buffer[j],sizeof(char),1,fs2);
        
j++;
    }
    
    
fclose(fs);
    
fclose(fs2);

    return 
0;

la cosa curiosa è che a volte va a volte no... ho provato con'immagine gif e va ho provato con un file zip e non va (ovviamente tutti files sotto 1MB)