fwrite in *.php ergibt unexpectet T_string

DaRealMC

Erfahrenes Mitglied
Hi zusammen,

versuche eben einen RSS-Feed 'statisch' zu machen. Also jedes mal, wenn ich ihn abrufe, wird eine feed.php mit den gleichen Inhalten erzeugt. Aber bereits in der zweiten Zeile kommt es zu Problemen :( (tolle Aussichten...)

PHP:
<?php
header("Content-type: application/xml");
if (!($fp = fopen('feed.php', 'w')))
   return;
fwrite ($fp, "<?php header(\"Content-type: application/xml\"); ?>\n");
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
fwrite ($fp, "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n");
?>
Das ergibt als Output in der feed.php
PHP:
<?php header("Content-type: application/xml"); ?>
<?xml version="1.0" encoding="iso-8859-1" ?>
Und wenn ich die feed.php nun aufrufe, erhalte ich
Parse error: syntax error, unexpected T_STRING in /redesign/feed.php on line 2
Ich verstehe das nicht. Im original-File, welches feed.php schreibt, steht genau das gleiche und dort geht es.
 
Funktioniert denn dein Skript so?
PHP:
<?php 
header("Content-type: application/xml"); 
if (!($fp = fopen('feed.php', 'w'))) 
   return; 
fwrite ($fp, "<?php header(\"Content-type: application/xml\"); ?>\n"); 
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n"; 
?>
Oder wist du das es an fwrite liegt?

Tobee
 
Jup. Und das verwirrt mich nur noch mehr...

fprintf() geht leider nicht :(
Obwohl es angeblich PHP5 ist.
Ist aber auch MySQL5 und 'select datediff()' geht ebenfalls nicht. Also etwas seltsame Serverkonfiguration bei diesem Hoster...
 
Zuletzt bearbeitet:
Probier mal Folgendes:
PHP:
<?php

	header('Content-type: application/xml');
	if( !($fp = fopen('feed.php', 'w')) ) {
		return;
	}
	fwrite($fp, '<?php header("Content-type: application/xml; charset=iso-8859-1"); ?>'."\n");
	echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
	fwrite($fp, 'echo \'<?xml version="1.0" encoding="iso-8859-1" ?>\';'."\n");

?>
 
@Gumbo: geht auch nicht

@toben: PHP Version 4.4.1
Dachte eigentlich, das ist 5.x, Ich bin aber nicht der, der den Webspace zahlt, und kenne die genauen Vertragsdetails nicht.
 
Du könntest auch mit den Funktionen zur Ausgabesteuerung die gesamte Ausgabe des Skripts puffern und in eine Datei speichern. Das könnte dann etwa wie folgt aussehen:
PHP:
<?php

	ob_start();
	header("Content-type: application/xml; charset=iso-8859-1");
	echo '<?xml version="1.0" encoding="iso-8859-1"?>';

	…

	file_put_contents('feed', ob_get_flush());

?>
 
Erstmal die Lösung zu deinem Problem, wie sie im PHP-Handbuch steht:
PHP-Manual hat gesagt.:
9. How am I supposed to mix XML and PHP? It complains about my <?xml> tags!

You need to turn off the short tags by setting short_tags to 0 in your php.ini file, or by using the appropriate Apache directive.

Das Problem beginnt bereits hier <?xml

Warum?
Du hast bei dir wahrscheinlich die PHP-Konfigurations-Option short_open_tag aktiv.
Dadurch ist es möglich, eine PHP-Skript-Passage bereits mit <? zu eröffnen, statt mit
<?php....das X in XML verursacht dann den Fehler...

Lösung: deaktiviere diese Option im Skript per [phpf]ini_set[/phpf]
 
Zurück