PHP is running as user Apache. Your FTP account is running as user 'fpadmin'. This is why the owners are different. Have you tried chown() php function (http://php.net/manual/en/function.chown.php)? This will change the owner of a file/directory.
Cheers
Ugh, my first down vote. That stings.. That was a stupid answer though..
Alright, so I'm trying to understand your question/replicate your error. Here's what I've tried and here are my results. Hopefully it will at least be of some use to you.
I have the following directory structure:
/var/www/public_html/test (chmod = 777 via SSH, owned by 'ftpuser')
/var/www/public_html/test/index.php (chmod = 777 via SSH, owned by 'ftpuser')
/var/www/public_html/test/ftp_owned.file (chmod = 644 (default), owned by 'ftpuser')
Then in the index.php file I have the following code:
mkdir("./downvoted");
chmod("./downvoted", 0777);
$h = fopen("./i_am_so.sad", "x+");
fwrite($h, "attempting to redeem myself");
fclose($h);
rename("./i_am_so.sad", "./downvoted/i_am_so.sad");
rename("./ftp_owned.file", "./downvoted/ftp_owned.file");
Resulting in a new directory structure:
/var/www/public_html/test (chmod = 777 via SSH, owned by 'ftpuser')
/var/www/public_html/test/index.php (chmod = 777 via SSH, owned by 'ftpuser')
/var/www/public_html/test/downvoted (chmod = 0777 via PHP, owned by 'apache')
/var/www/public_html/test/downvoted/i_am_so.sad (permissions = 644 (default), owned by 'apache')
/var/www/public_html/test/downvoted/ftp_owned.file (permissions = 644 (default), owned by 'ftpuser')
Still sad as I wasn't able to reproduce the error nor redeem myself. Hopefully you can either post the error you are receiving (permission denied?) or point out how my experiment differs from your application.