Я подозреваю, что проблема с открытием исходного файла. Следующее сработало для меня.
Я создал /home/input.txt:
this is a test
that may
or may not work.
Затем побежал:
$cmd = shell_exec(" cp /home/input.txt output.txt");
$file = 'output.txt';
$content = explode("\n",file_get_contents("output.txt"));
$keyword = "may";
$content = str_replace($keyword,'<span style="color:red">'.$keyword.'</span>',$content);
$file = file_put_contents($file, implode("\n", $content));
echo "<a href='http://some.thing.com/folder/output.txt'>Download Result file</a>";
И output.txt теперь:
this is a test
that <span style="color:red">may</span>
or <span style="color:red">may</span> not work.