Summary: fopen returns a file handle, yet fgets doesn't want to read it. I've scoured google, php.net <http://php.net>, phpfreaks, usenet, etc. It seems to work elsewhere. My setup: Apache 2.0.47 PHP/5.0.4 Windows 2000 The call: make_link_list("index"); (the file exists for fopen(), and actually errors if I add characters to break it) My Source Code: <?php function make_link_list($name="") { print $_SERVER['DOCUMENT_ROOT'].'/outside/'.$name.'.txt'; ?> <ul> <? $fh=fopen($_SERVER['DOCUMENT_ROOT'].'/outside/'.$name.'.txt', 'r+') || die("Cannot open file"); for ($line = fgets($fh, 1000); 0 && ! feof($fh); $line = fgets($fh)) { $line = trim($line); if(strlen($line) > 0) { print '<li>' . $line ."</li>\n"; } } ?> </ul> <? fclose($fh); } ? Output: C:/Program Files/Apache Group/Apache2/htdocs/youmightbe/outside/index.txt *Warning*: fgets(): supplied argument is not a valid stream resource in *C:\Program Files\Apache Group\Apache2\htdocs\youmightbe\outside.php* on line *11* *Warning*: fclose(): supplied argument is not a valid stream resource in *C:\Program Files\Apache Group\Apache2\htdocs\youmightbe\outside.php* on line *20*