Probleme mit OpenSSL bei XML- und json-Dateien
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
Hallo, liebe Forengemeinde,
bei einer meiner Webseiten laufen Livestreams von diversen Radiosendern, hierbei werden die externen XML- und json-Dateien der Radiostationen mittels eines kleinen PHP-Scripts in eine Titelanzeige umgewandelt.
Bisher lief das auch ohne Probleme, seit einigen Tagen tauchen jedoch bei knapp der Hälfte der Titelanzeigen für mich seltsame Fehlermeldungen auf, obwohl ich keinerlei Änderungen an der Datei vorgenommen habe. Jeweils eine XML- und eine json-Datei sind beispielhaft darin aufgeführt.
XML-Datei
<?php $url = 'https://api.schlagerparadies.de/get_metadata/'; $xml = utf8_encode($url); $xml = simplexml_load_file($url); $song = $xml->channel[1]->artist." - ".$xml->channel[1]->title; print ( $song ); ?>
Fehlermeldung
Warning: simplexml_load_file(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/schlagerparadiestitel.php on line 6
Warning: simplexml_load_file(): Failed to enable crypto in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/schlagerparadiestitel.php on line 6
Warning: simplexml_load_file(https://api.schlagerparadies.de/get_metadata/): failed to open stream: operation failed in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/schlagerparadiestitel.php on line 6
Warning: simplexml_load_file(): I/O warning : failed to load external entity "https://api.schlagerparadies.de/get_metadata/" in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/schlagerparadiestitel.php on line 6
Notice: Trying to get property of non-object in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/schlagerparadiestitel.php on line 7
Notice: Trying to get property of non-object in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/schlagerparadiestitel.php on line 7
Notice: Trying to get property of non-object in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/schlagerparadiestitel.php on line 7
Notice: Trying to get property of non-object in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/schlagerparadiestitel.php on line 7
json-Datei
<?php $url = 'https://api.nrjnet.de/webradio/nostalgie/current/nostalgie.json'; $contents = file_get_contents($url); $contents = utf8_encode($contents); $results = json_decode($contents); print $results->artist." - ".$results->title; ?>
Fehlermeldung
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/nostalgietitel.php on line 6
Warning: file_get_contents(): Failed to enable crypto in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/nostalgietitel.php on line 6
Warning: file_get_contents(https://api.nrjnet.de/webradio/nostalgie/current/nostalgie.json): failed to open stream: operation failed in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/nostalgietitel.php on line 6
Notice: Trying to get property of non-object in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/nostalgietitel.php on line 9
Notice: Trying to get property of non-object in /home/webpages/lima-city/kurzmitteilungsservice/html/radioberlin/titel/nostalgietitel.php on line 9
Wo kommen diese Fehlermeldungen her? Und vor allem wie sieht eine Lösung dieses Problems aus. Über eine Antwort würde ich mich freuen.
Viele Grüße Michael -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
HI,
gibt es schon einen Beitrag zu, wenn man googled "php xml ssl":
https://stackoverflow.com/questions/32621929/error-when-loading-external-xml-file-with-php-via-https-ssl3-get-server-certif
auf deutsch zusammengefasst: Zieh dir aus dem Browser die Zertifikatskette für die Webseite, speichere die als crt, wo dein script drauf zugreifen kann und dann passe das folge Coeschnipsel, was ich auch nur aus obiger Quelle kopiert habe, entsprechend an:
$context = stream_context_create(array('ssl'=>array( 'verify_peer' => true, 'cafile' => '/path/to/ca-bundle.crt' ))); libxml_set_streams_context($context);
es muss natürlich erfolgt sein, bevor du die verbindung aufbaust.
-
OK, danke, der Codeschnipsel für die XML-Datei funktioniert einwandfrei.
Gibt es etwas vergleichbares auch für json-Dateien?
Vielen Dank! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage