$xml_file = file_get_contents(SITE_PATH . 'cms/data.php');
Le problème est que l'accès au fichier URL est désactivé sur un serveur. Je ne peux pas l'activer, c'est une chose d'hébergement.
La question est donc la suivante. Le data.php
le fichier génère du code xml.
Comment puis-je exécuter cela et obtenir les données xml sans faire la méthode ci-dessus?
C'est possible?
Utilisez cURL . Cette fonction est une alternative à file_get_contents
.
function url_get_contents ($Url) {
if (!function_exists('curl_init')){
die('CURL is not installed!');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
Vous devriez essayer quelque chose comme ça, je fais ça pour mon projet, c'est un système de secours
//function to get the remote data
function url_get_contents ($url) {
if (function_exists('curl_exec')){
$conn = curl_init($url);
curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($conn, CURLOPT_FRESH_CONNECT, true);
curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1);
$url_get_contents_data = (curl_exec($conn));
curl_close($conn);
}elseif(function_exists('file_get_contents')){
$url_get_contents_data = file_get_contents($url);
}elseif(function_exists('fopen') && function_exists('stream_get_contents')){
$handle = fopen ($url, "r");
$url_get_contents_data = stream_get_contents($handle);
}else{
$url_get_contents_data = false;
}
return $url_get_contents_data;
}
puis plus tard, vous pouvez faire comme ça
$data = url_get_contents("http://www.google.com");
if($data){
//Do Something....
}
Oui, si vous avez désactivé les wrappers d'URL, vous devez utiliser des sockets ou, mieux encore, la bibliothèque cURL .
S'il fait partie de votre site, faites-y référence avec le chemin d'accès au système de fichiers et non l'URL Web. /var/www/...
, plutôt que http://domain.tld/...
.
Si vous essayez de lire du XML généré à partir d'une URL sans file_get_contents()
alors vous voudrez probablement jeter un œil à cURL
Si le fichier est local, votre commentaire sur SITE_PATH
suggérer, c'est assez simple il suffit d'exécuter le script et de mettre en cache le résultat dans une variable en utilisant fonctions de contrôle de sortie :
function print_xml_data_file()
{
include(XML_DATA_FILE_DIRECTORY . 'cms/data.php');
}
function get_xml_data()
{
ob_start();
print_xml_data_file();
$xml_file = ob_get_contents();
ob_end_clean();
return $xml_file;
}
Si c'est distant comme beaucoup d'autres l'ont dit curl
est le chemin à parcourir. S'il n'est pas présent, essayez socket_create
ou fsockopen
. Si rien ne fonctionne ... changez d'hébergeur.
Si vous l'avez disponible, utiliser curl est votre meilleure option.
Vous pouvez voir s'il est activé en faisant phpinfo()
et en recherchant la page pour curl.
S'il est activé, essayez ceci:
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL, SITE_PATH . 'cms/data.php');
$xml_file = curl_exec($curl_handle);
curl_close($curl_handle);