file_get_contents Verhaltensweise

TommiTom

Grünschnabel
Hallo!

Ich würde mich freuen wenn mir jemand helfen könnte.

Das Problem: a.php ruft per file_get_contents b.php auf und gibt nicht den echo Wert von b.php an a.php als String zurück (so wie es sein sollte), sondern resultiert in einem 502 Bad Gateway error, oder in einer exakten php Inhalts Ausgabe wenn ein relativer Pfad ohne das http verwendet wird.

a.php
PHP:
<?
 $abc = file_get_contents("http://xxx.de/b.php");
echo $abc;
 ?>

b.php
PHP:
<? echo "test"; ?>

Die php Files habe ich testweise erstellt, ein größeres Script funktioniert aufgrund genau diesen Fehlers nicht.

Getestet habe ich dies auf 2 verschiedenen Servern. Auf dem einen bekomme ich ein "test" zurück, daher er führt die b.php aus und gibt den echo Wert "test" zurück, so wie es sein sollte. Auf dem anderen wo ich es zum laufen bekommen möchte bekomme ich jedoch einen 502 Bad Gateway error.
Gebe ich den Absoluten Server Pfad oder den relativen Pfad an (ohne http), führt er die b.php leider nicht aus sondern holt sich einfach nur den kompletten Quelltext Inhalt ( <? ... ?>). Das wiederum funktioniert auf beiden Server - Jedoch muss ich mir den echo Wert der b.php holen, und nicht den Quelltext.

Weiß jemand warum ich einen 502 Bad Gateway error bekomme auf dem einen Server wo ich es zum Laufen bringen möchte ?

Bzw weis jemand wie ich file_get_contents dazu bringen kann auch b.php Files welche mit einem relativen Pfad ( auf dem Server ) angegeben werden, auszuführen ?

Ich bedanke mich bei euch recht herzlich für die Mühe sich mit diesem Problem zu befassen.

mfg
Tommi
 
Zuletzt bearbeitet:
Naja...die Losung hast du ja schon selbst genannt....du musst einen Pfad mit http://... nehmen...andernfallswird die Datei übers Dateisystem geholt, und du bekommst die Source geliefert.

Sehe es ungefähr so...du hast lokal nen Webserver installiert....

Aufruf mit Browser:
http://localhost/b.php
....liefert dir "Test"

c:/pfad/zur/b.php

...liefert dir die Source,
...weil da der Webserver überhaup nicht zum Tragen kommt.
Webserver(HTTP-Server) reagieren auf HTTP-Anfragen, das Zugreifen auf eine Datei übers Dateisystem des OS ist keine solche.
 
Vielleicht merkt PHP oder der Webserver, dass du auf eine über das Dateisystem verfügbare Datei zugreifen möchtest und liefert dir deshalb den Dateiinhalt über das Dateisystem.
 
danke für die Antworten!
Ich habe das gerade mit localhost getestet, stoße hierbei jedoch auf das Problem das ich wahrscheinlich einen falschen Pfad angebe.

Angegeben habe ich in a.php:

PHP:
$abc = file_get_contents("http://localhost/var/www/user33/spit/www/b.php")

Erhalte folgenden Fehler (Datei nicht gefunden):

Code:
failed to open stream: HTTP request failed!
HTTP/1.1 404 Not Found in /var/www/user33/spit/www/a.php on line 3

Habe es auch mit http://localhost/b.php sowie http://localhost/www/b.php probiert. Findet jedoch auch hier die Datei nicht. Wo liegt mein Pfad Fehler ?
 
Wenn ich die Ordnerstruktur richtig verstehe müsste es so aussehen:
PHP:
$abc = file_get_contents("http://localhost/b.php");

/Nachtrag:
localhost ist es natürlich nur, wenn es lokal bei dir läuft!
Wenn es dein Webhoster ist, solltest du deine Domain eintragen, statt localhost.
 
Wenn es dein Webhoster ist, solltest du deine Domain eintragen, statt localhost.

Danke für die Antwort jedoch habe ich im ersten Post beschrieben das genau das nicht geht. Bei Angabe meiner domain erhalte ich einen 502 Bad Gateway error. Dabei muss ich sagen das er die b.php zwar ausführt, aber irgendetwas verhindert das das echo "test" an die a.php zurück kommt. Wie schon gesagt, Ergebnis ein 502 Bad Gateway error.

mfg
Tommi
 
Zuletzt bearbeitet:
Zurück