une autre solution radicalement différente mais qui fonctionne chez moi:
<?php
$fichier='texte.txt'; //attention tu dois mettre le chemin relatif par rapport au script php
$array_fichier=file($fichier); //on obtient un array du contenu du fichier ligne par ligne
//avec la fonction file pas besoin de fopen et fclose
$num_ligne=4; //numéro de la ligne à insérer à partir de 0 !!!
$contenu_a_rajouter=array(); //cela doit être un array !!
$contenu_a_rajouter[0]="cette portion de texte\n"; //chaque ligne terminée par \n
if($num_ligne < sizeof($array_fichier)){ //on verifie que la ligne a inserer n'est pas en dehors des limites di fichier
//on scinde l'array en deux
$array_avant=array_slice($array_fichier,0,$num_ligne);
$array_apres=array_slice($array_fichier,$num_ligne);
//on rajoute les differents array
$array_final=array_merge($array_avant,$contenu_a_rajouter,$array_apres);
//on réecrit dans le fichier
if(file_put_contents($fichier,$array_final)){echo "Ecriture reussie !<br />";}
}else{
echo "numero en dehors taille fichier";
}
//relecture
$array_lu=file($fichier);
echo '<pre>';
print_r($array_lu);
echo '</pre>';
?>