this is a scoping problem caused by the crappy wordpress architecture.
you can get around this by setting a request level attribute in your page, so in single.php, for instance, you can set a request-level variable by putting this at the top:
the_post();
$_REQUEST['pagetitle']= $post->post_title ;
then in any place else after that (footer, comments, etc), you can just recall it:
<php echo $_REQUEST['pagetitle'] ?>
This ensures that it’s available no matter what the scope for the rest of the request.