Direkte Ausgabe bei file() und fopen() verhindern

Hi!

Ich versuche, aus Joomla heraus, ein externes Script (mittels file() bzw fopen()) zu laden, um die daraus kommenden Daten zu verarbeiten.
Vereinfacht sieht das ungefähr so aus:

function getContent($url) {
$content = implode("", file($url));
return $content;
}

$content = getContent($url);

Danach kommt nichts mehr, was irgendeine Ausgabe erzeugt (kein echo oder return o.ä.) und trotzdem wird mir auf der Seite ausgegeben, was die aufgerufene URL zurück liefert.

Ich könnte mir vorstellen, dass es an einer PHP Einstellung liegt.
Kann jemand weiter helfen?

Danke und Gruß
Christoph

Auch Hi!

Ich versuche, aus Joomla heraus, ein externes Script (mittels
file() bzw fopen()) zu laden, um die daraus kommenden Daten zu
verarbeiten.
Vereinfacht sieht das ungefähr so aus:

vielleicht solltest Du das nicht unbedingt vereinfachen, wenn es doch zu fehlern kommt?

function getContent($url) {
$content = implode("", file($url));
return $content;
}

Ich weiss ja nicht, welches Ziel Du in Deinem Script verfolgst, und ob die Funktion da unbedingt nötig ist, aber hast Du schon mal versucht ohne die Funktion auszukommen?

Danach kommt nichts mehr, was irgendeine Ausgabe erzeugt (kein
echo oder return o.ä.) und trotzdem wird mir auf der Seite
ausgegeben, was die aufgerufene URL zurück liefert.

kann ich mir eigentlich nicht vorstellen, dass es sowas von allein tut…
evtl noch eine alte debug-Ausgabe, die doch nicht auskommentiert wurde?

Ich könnte mir vorstellen, dass es an einer PHP Einstellung
liegt.
Kann jemand weiter helfen?

Im Moment fürchte ich noch nicht…

Grüße
Munich

Hallo

Da fällt mir nichts besseres ein als erst mal viele echos einzufügen:

echo '\*1\*';
function getContent($url) {
echo '\*2\*';
$content = implode("", file($url));
echo '\*3\*';
return $content;
}
echo '\*4\*';
$content = getContent($url);
echo '\*5\*';

Dann siehst du an welcher Stelle die Ausgabe erfolgt. Eventuell am Ende noch ein unset($content); anfügen und sehen was passiert.

Und übrigens: Diese Funktion brauchst du nicht selbst zu definieren, denn es gibt sie schon: file_get_contents()

Johannes

Okay… Die echos kommen alle vor der Ausgabe.

unset($content) hat dazu geführt, dass es nicht mehr ausgegeben wird.

Daher vermute ich mal, dass Joomla mit der Variable hinterher noch irgendwas anstellt und ausgibt.

ERLEDIGT
Ahhh, ich danke den Beantwortern meiner Frage :smile:

unset() hat mir gezeigt, dass tatsächlich die Variable selbst an der Ausgabe Schuld ist und nicht file() oder fread().

Genauer gesagt war der Variablen NAME Schuld!

$content wird wohl von Joomla verwendet und ausgegeben.
Ich hab den Variablen Namen geändert und nun wird nur dort ausgegeben, wo ich das auch will :smile:

Achja, danke für den Hinweis auf die Funktion file_get_contents()!
Das ist natürlich einfacher und erspart mir in diesem Fall sogar eine komplette Datei :smile:

Danke vielmals und
mit freundlichem Gruß
Christoph