while (!feof($fp)) {...}この処理の前に、$fpが正常かのチェックがされていません。
これではファイルオープン失敗時に無限ループしてしまいます。 怖いですね。
ファイルオープン失敗なんて、バグでよくあること。
ファイルオープンに失敗していると、$fp に false が入っています。
feof(false)は、 false になります。
したがって、無限ループします。
正しいやりかたは、
エラー時に何かしたいことがあれば、
if ($fp !== false) { while(!feof($fp)) {....}}else {...}
単純にスキップしていいなら
while ($fp && !feof($fp)) {...}
でもいいね。 ※毎回$fpの判定という無駄があるけど、どうでもいいでしょう。