エラーの原因を印刷したいと思います。
error_get_last() は何も返さないようです。rename() は、例外ではなく TRUE|FALSE を返します。
if (!rename($file->filepath, $full_path)) {
$error = error_get_last();
watchdog('name', "Failed to move the uploaded file from %source to %dest", array('%source' => $file->filepath, '%dest' => $full_path));
}