Well, your first non-question question is a PHP question....
When PHP uploads an image and moves items around as the script, it takes on the role of whatever user is running it. Most shared hosts run it as "noone" or an arbitrary account. So when you upload an image via FTP, you as the FTP user are the owner of that file. When PHP does it, PHP (or the user running PHP on the server) is the owner.
The only possible reason that I would say it wouldn't work is if you're using an old name. Like if you had a script that uploaded a file, and then you ran this to try and CHMOD it to 0755, and used old referenced variables that are no longer available, you wouldn't chmod anything, or you'd chmod a temporary file. My guess is, you're chmodding a temp file, and you want the actual file.
Double check your paths, and also, double check your filenames. One other alternative you could do, is do a directory listing, and if the permissions aren't right, correct them with the chmod() function.
<?php
$dir = '/some/usr/dir/images/';
$d = dir($dir);
while(FALSE !== ($entry = $d->read()))
{
if($entry != '.' && $entry != '..')
{
// get the file permissions
$perms = substr(sprintf('%o', fileperms($dir.$entry)), -4);
if($perms !== '0755')
{
if(chmod($dir.$entry, 0755)===TRUE)
{
echo 'Changed permissions of file ('.$dir.$entry.') successfully.<br>';
}
else
{
echo 'Failed to change permissions of file ('.$dir.$entry.').<br>';
}
}
}
}
?>
~Brett