J'ai ce morceau de code ci-dessous qui fonctionne correctement sur mon serveur hébergé distant, mais n'est pas une raison pour une raison quelconque de ma machine Linux locale. Ive essayé à l'aide de fichiers_get_contents aussi pour obtenir le service réel, mais il renvoie également false.
Est-ce que quelqu'un sait pourquoi cela se produit? P>
Merci :) P>
$xml_data = simplexml_load_file("****"); if ($xml == FALSE) { echo "Failed loading XML\n"; foreach (libxml_get_errors() as $error) { echo "\t", $error->message; } }
6 Réponses :
Assurez-vous de disposer de allaite_url_fopen code> activé dans votre
php.ini code> p>
@Mark bizarre. Je ne penserais pas qu'ils dépendraient directement les uns sur les autres.
Vous obtenez cette erreur car l'accès à distance est désactivé sur votre serveur. Une alternative à ceci utilise CURL.
Utilisez mon code ci-dessous pour utiliser CURL: P>
function produce_XML_object_tree($raw_XML) { libxml_use_internal_errors(true); try { $xmlTree = new SimpleXMLElement($raw_XML); } catch (Exception $e) { // Something went wrong. $error_message = 'SimpleXMLElement threw an exception.'; foreach(libxml_get_errors() as $error_line) { $error_message .= "\t" . $error_line->message; } trigger_error($error_message); return false; } return $xmlTree; } $xml_feed_url = '******'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $xml_feed_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $xml = curl_exec($ch); curl_close($ch); $cont = produce_XML_object_tree($xml);
Fonctionne comme un charme! Merci! :)
Utilisez comme celui-ci
$xml = simplexml_load_file('http://localhost/test/123.xml'); foreach ($xml->children() as $child) { $remoteCount[$child->getName()] = $child; } var_dump($remoteCount);
Eh bien, j'ai eu le même problème et même si je voudrais poster cela pour aider quiconque peut n'avoir pas encore essayé cette solution.
J'ai eu un script PHP qui a fonctionné bien localement, mais lorsque vous l'utilisez sur un serveur client exécutant Plesk, il ne fonctionnerait pas et échoué lorsque vous essayez de saisir le fichier XML externe. P>
J'essayais de faire référence un fichier XML externe d'un script PHP. Le serveur que j'utilisais était en cours d'exécution. Avant d'envisager de changer d'hôte, tout ce que je faisais simplement a été mis à jour les paramètres de PHP sur le serveur pour exécuter en tant que module Apache au lieu de FastCGI. P>
message d'erreur que je recevais (exemple): P> Avertissement: simpplexml_load_file (URL) [Fonction.SIMPlexML-Load-File]: Échec de l'ouverture du flux: Autorisation refusée p>
Ceci résolue le problème dans mon cas. P>
J'ai utilisé suivi Rapports Paramètres dans le script PHP: P>
assert_options(ASSERT_ACTIVE, 1); assert_options(ASSERT_BAIL, 1); assert_options(ASSERT_QUIET_EVAL, 1); error_reporting(E_ALL); ini_set('display_errors', 1);
J'ai eu le même problème que c'est juste un point non déclaré stupide dans le format de fichier simppexml strud> doit avoir une étiquette de conteneur, vous devez donc simplement mettre une balise parent contenant tout votre données telles que ceci: p>
Pouvez-vous faire quelque chose comme
file_get_contents ("http://www.example.com"); code> pour vérifier que vous pouvez appeler n'importe quel fichier distant?
10 années! et personne n'a remarqué que
si ($ xml_data == faux) code> et non comme ci-dessus ... :-)