No es necesario que sea al inicio del archivo, ¿donde leiste eso?

, puede ser perfectamente al final de un archivo en medio en donde quieras.
Lo importante y clave es que NO puedes enviar nada de texto, esto es por diseño del protocolo HTTP, si realmente no puedes diseñar correctamente el flujo de tu script entonces puedes recurrir a las funciones de salida de PHP para controlar la salida de texto:
Código php:
Ver original<?php
?>
<html>
<head>
<title>blah</title>
</head>
<body>
<p>blah</p>
<?php
echo "foo";
?>
</body>
</html>
<?php
?>
Como te comento no es por PHP, y que PHP "llore", el problema es el mal diseño de muchos scripts, y el diseño del protocolo HTTP, cuando tu envias una cabezera esta debe de ser ANTES del documento de salida, por eso si envias texto, pues automaticamente cortas con el proceso de la transferencia, y por ende ya no puedes enviar las cabeceras.
Saludos