Hallo Mathias, hallo Kalaus,
$head = [link:http://www.php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc@title=<<<HEAD]
<?php link:http://de.php.net/manual/de/function.readfile.php@title=readfile;?>
HEAD;
Nein, das hat damit nichts zu tun. Kalaus Code an sich ist ja nicht Fehlerhaft, das Problem ist lediglich die Serverkonfiguration.
Noch einmal als Kurzfassung: Auf dem Server ist Safe-Mode aktiviert, das bedeutet, dass ein Script nur auf Dateien zugreifen kann, die dem selben Benutzer wie eben jenes Script gehören.
Die PHP-Dateien, die Kalaus von zuhause per FTP o.ä. hochgeladen hat, haben den gleichen Eigentümer, wie die HTML-Dateien (in diesem Fall menu\_oben.html), die er hochgeladen hat, deswegen kann er diese Datei in seinen Scripten einbinden.
Wenn er aber mit PHP eine neue Datei erzeugt, gehört diese dem Benutzer, unter dem der Webserver ausgeführt wird. Deswegen kann das erzeugt Script nicht die Datei, die per FTP hochgeladen wurde ausführen.
Man könnte, die Datei menu\_oben.html auch durch ein Script erzeugen lassen, sofern sie nicht irgendwo anders eingebunden wird. Es wäre wohl auch einen Versuch wert, eine Datei für das zu erstellende Script per FTP hochzuladen, und die Rechte so zu setzen, dass der Webserver-Benutzer sie modifizieren kann. Diese Lösungen sind allerdings nicht besonders schön, weil sie das Programm unnötig kompliziert machen und in einer Shared-Hosting-Umgebung (wovon ich wegen des aktivierten Safe-Modes ausgehe) zu Sicherheitslücken führen können.
Der ganze Ansatz, eine ausführbahre Datei dynamisch erzeugen zu lassen, erscheint mir allerdings schon etwas verquer. Es wäre also schön, wenn du noch ein bisschen mehr Hintergrundinfos zu deinem Problem lieferst, Kalaus. Möglicherweise lässt sich dann das Problem auf elegantere Art umgehen anstatt nur an den Symptomen herum zu frickeln.
Schöne Grüße,
Johannes