Dynamische XML Datei extern abrufen

Hallo liebes Forum,

ich versuche gerade von einem virtuellen Server auf meinem Computer auf eine dynamisch mit PHP generierte XML Datei auf meinem Webspace zuzugreifen. Wie ich schon erfahren habe, ist ein Zugriff von außen auf die MYSQL Datenbanken nicht möglich. Daher wollte ich das so lösen.

Mein PHP Skript wird mit header ("Content-Type:text/xml"); als XML Datei ausgegeben.

Mein lokales Skript will mit [...] $xml = simplexml_load_file($xmlFile); [...] und der direkten Adresse die Daten auslesen.

Wenn ich mit is_readable($xmlFile) überprüfe ob ich Zugriff auf die Datei habe, bekomme ich als Antwort, dass die Datei nicht lesbar ist.

Könnt ihr mir weiterhelfen, warum das so ist und wie ich diesen Fehler beheben kann?
Vielen Dank im Voraus!

Julian

Von welcher URL willst du denn lesen, respektive was ist in $xmlFile?

php.net/manual/de/function.is-readable.php:

-> php.net/manual/de/wrappers.http.php:

var_dump(is_readable(PHP_MANUAL)); // -> bool(true) var_dump(did_you_read(PHP_MANUAL)); // -> bool(false)

In $xmlFile steht die absolute Adresse zur PHP Datei, die auf meinem bplaced Websapce liegt. Diese Datei erstellt nicht eine XML Datei sondern gibt sich beim Abruf als solche aus.
Das Skript das darauf zugreifen will läuft auf einem virtuellen MAMP Server der auf meinem Mac installiert ist.

Wenn man per Brauser direkt auf die URI zugreift, unter welcher das PHP-Skript die XML-Ausgabe produziert,
kommt dann die gewünschte Ausgabe samt des gewünschten Inhaltstyps (application/xml ist besser als das alte text/xml)?
So kann man jedenfalls herausfinden, ob das Skript auf dem lokalen Rechner richtig läuft oder das XML-erzeugende Skript.
Je nachdem, wo was schiefgeht, kann man da die Fehlersuche fortsetzen, etwa könnte dein Dienstprogramm
auf deinem Rechner dafür ungeeignet konfiguriert sein.

Habe den Fehler bzw. die Lösung gefunden.

Für die externe Abfrage muss ich file_get_contents(…) verwenden, da man nur mit dieser Funktion auf Dateien außerhalb des eigenen Servers zugreifen kann.

Das funktionierende Skript sieht nun so aus:

$xmlFile = file_get_contents("http://.......php");
	
$xml = simplexml_load_string($xmlFile); 

foreach ( $xml->entnahme as $entnahme )   
	{   
			
		[...]
	
	}