[man]fopen/man or [man]file_exists/man working would probably be dependent on server configuration (the "Fopen Wrappers" section of the server's php.ini file). Although this parameter is set to "on" in a default installation, many shared hosts or hosting services disable this function. The output of [man]phpinfo/man should tell you it it's on or off.
As for [man]fopen/man, is this basically what you're trying?
<?php
$foo=fopen("http://www.google.com/images/logo_sm.gif", 'r');
if ($foo) {
echo "yup";
}
echo "\n";
?>
If fopen wrappers are off, there aren't many good ways to test for the file in advance. You have found one; another might be an attempt to open a socket and connect, send a GET yourself, etc. However, if fopen wrappers are off, they probably aren't gonna let you create a socket, either ....