La commande file ne doit pas être utilisée pour les gros fichiers. En effet, elle alloue temporairement trop de mémoire et peut dépasser la memory_limit.
<?php
  $arr=file("fichier-10M");
  echo "Peak : ".memory_get_peak_usage()."\n";
  echo "Usage: ".memory_get_usage()."\n";

?>
Le fichier fichier-10M fait 10Mo exactement. Le résultat est :
Peak : 20051900
Usage: 10051816
Si la limite mémoire était à 12Mo, le programme plante.

Il est plutôt souhaitable d'utiliser fopen :
<?php
  $fp=fopen("fichier-10M""rb");
  if ($fp!==FALSE)
  {
    while (!feof($fp))
    {
      $arr[]=fread($fp4096);
    }
  }
  echo "Peak : ".memory_get_peak_usage()."\n";
  echo "Usage: ".memory_get_usage()."\n";

?>
Dans ce contexte, on a :
Peak : 10275828
Usage: 10275872
Avec la même limite à 12Mo, le programme fonctionne correctement.