Gibt es da keine schönere Variante?
Aber ja doch!
<?php
/*
erzeuge ICS-Daten als String $str
*/
# Erzeuge die richtigen Header für den Mime-Typ:
header('Content-Type text/ics; charset=UTF-8')
header('Content-Disposition: attachment; filename="kalender.ics"');
#Verhindere das Cachen im Browser und durch Proxis:
header( 'Expires: Thu, 01 Jan 1970 00:00:00 +0' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
# Gib die Daten aus:
print $str;
# Hör auf zu jammern :)
exit;
Soweit kein Problem einfach mit php Datei auf den Webspace schreiben und weiterleiten.
Diesen Unfug wirst Du vermeiden wollen.