Did you read the docs on fgets? I'm thinking you want fread, not fgets. fgets is line oriented. I.e.
$line = fgets($fp,4096);
will result in $line having ONE line of the file pointed to by $fp. I.e. it's only gonna grab a single line.
$body = fread($fp,1000000);
will read the first 1000000 bytes of the file pointed to by $fp. A neat trick to read the whole file:
$file = "/usr/share/dict/words";
$fp = fopen($file,"r");
$body = fread($fp,filesize($file));