fopen et xml distant

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par dudo, 16 Mars 2006.

  1. dudo
    dudo WRInaute impliqué
    Inscrit:
    10 Janvier 2004
    Messages:
    532
    J'aime reçus:
    0
    Bonjour,

    Voici un code qui peut etre utile, il permet de stocker un flux xml dans une bdd.
    Cependant je n'arrive pas à ouvrir un fichier distant avec la commande fopen en PHP.
    En effet, si j'ouvre un fichier en local
    Voir fin du programme:
    if (($arrRequetes = insertXml ($arrElem, $arrSql, 'vvch4', 'adresselocale.xml'))!== false) {

    , le fichier s'ouvre sans problème, mais si à présent je mets :

    if (($arrRequetes = insertXml ($arrElem, $arrSql, 'vvch4', 'http://linuxfr.org/backend.rss'))!== false) {

    probleme d'ouverture

    Peut-être quelqu'un a déjà eu ce problème, comment l'avez-vous contourné ?
    Merci bien et bonne journée !

    ludo




    Code:
    <?php 
    
    function insertXml ($arrElem, $arrChamps, $table, $fichierXml) 
    {
    $xml_parseur = xml_parser_create();
    $fp = fopen($fichierXml, "r") or die("Fichier introuvable. L'analyse a ete suspendue");
    while ($fdata = fread($fp, filesize ($fichierXml))){
    xml_parse_into_struct ($xml_parseur, $fdata, $arrOutput) or die (sprintf("Erreur XML : %s à la ligne %d\n",
    xml_error_string(xml_get_error_code($xml_parseur)),
    xml_get_current_line_number($xml_parseur))
    );
    }
    
    foreach ($arrOutput as $elem) {
    if (in_array ($elem['tag'], $arrElem)) {
    $arrReq[$elem['tag']][] = $elem['value'];
    if (is_array ($elem['attributes'])){
    foreach ($elem['attributes'] as $clef => $attr) {
    if (in_array ($clef, $arrElem)) {
    $arrReq[$clef][] = $attr;
    }
    }
    if (is_array ($arrReq)) {
    $cpt = count ($arrReq[$arrElem[0]]);
    $strChamps = '';
    foreach ($arrChamps as $champ) {
    $strChamps .= ''.$champ.',';
    }
    $strChamps = rtrim ($strChamps, ',');
    $i = 0;
    while ($i < $cpt) {
    $strTmp = '';
    foreach ($arrReq as $clef => $dump) {
    $arrReq[$clef][$i] = mysql_real_escape_string ($arrReq[$clef][$i]); 
    $strTmp .= '"'.$arrReq[$clef][$i].'",';
    }
    $strTmp = rtrim ($strTmp, ',');
    $requeteTmp[] = $strTmp;
    $i ++;
    }
    $i = 0;
    while ($i < $cpt) {
    $requete[] = 'INSERT INTO '.$table.' ('.$strChamps.') VALUES ('.$requeteTmp[$i].')';
    $i ++;
    }
    return $requete;
    }
    return false;
    }
      
    ?>
    
     
    <?php 
    
    $arrElem = array ('TITLE', 'LINK', 'DESCRIPTION'); 
    $arrSql = array ('title', 'link', 'description'); 
    
    if (($arrRequetes = insertXml ($arrElem, $arrSql, 'vvch4', 'adresselocale.xml'))!== false) { 
    
    echo '<pre>';
    // print_r($arrRequetes);
    foreach ($arrRequetes as $key => $requete) {
    echo $key, ' => ', $requete, ' ';
    if (mysql_query ($requete)) {
    echo 'OK <br />';
    }
    else {
    echo 'PAS OK <br />';
    }
    }
    echo '</pre>';
    }
    else
    echo '<br /><br />Erreur, false retourne';
    
    ?>
    
    
     
  2. chantra
    chantra WRInaute discret
    Inscrit:
    27 Juin 2005
    Messages:
    225
    J'aime reçus:
    0
    il te faut allow_url_fopen = On dans php.ini.

    si ca n'est pas activé, tente un
    Code:
    ini_set('allow_url_fopen',1);
     
  3. u8086
    u8086 WRInaute passionné
    Inscrit:
    24 Mai 2004
    Messages:
    2 436
    J'aime reçus:
    0
    Est-tu hébergé sur un mutu chez OVH ? car la commande fopen y pose problème.
     
  4. shrom
    shrom WRInaute impliqué
    Inscrit:
    5 Juillet 2004
    Messages:
    781
    J'aime reçus:
    0
    Tu peux regarder du côté de l'extension curl qui est généralement installée, elle est plus fiable et plus rapide que fopen.
     
  5. dudo
    dudo WRInaute impliqué
    Inscrit:
    10 Janvier 2004
    Messages:
    532
    J'aime reçus:
    0

    En ce qui concerne le allow_url_fopen, il est bien sur on.

    ludo
     
  6. mr_go
    mr_go WRInaute passionné
    Inscrit:
    21 Septembre 2005
    Messages:
    1 688
    J'aime reçus:
    2
    Si tu peux, passe à MySQL 5.0: Il y a des fonctions spéciales pour le parsing XML. ;)
     
Chargement...
Similar Threads - fopen xml distant Forum Date
Fonction fopen qui ne marche pas Développement d'un site Web ou d'une appli mobile 1 Janvier 2013
comment activer allow_url_fopen dans la configuration php? Développement d'un site Web ou d'une appli mobile 23 Février 2012
Probleme avec fopen et boucle Développement d'un site Web ou d'une appli mobile 22 Janvier 2011
Probleme de redirection 301 et fopen URL Rewriting et .htaccess 30 Mars 2010
1and1 "allow url fopen" Administration d'un site Web 17 Août 2008
Est il possible de mettre du php dans la fonction fopen? Développement d'un site Web ou d'une appli mobile 15 Mars 2008
allow_url_fopen = On, et se proteger en meme temps Administration d'un site Web 5 Novembre 2007
activer allow_url_fopen sur un seul répertoire Administration d'un site Web 4 Novembre 2007
Activation Fonction Fopen ovh mutualisé Développement d'un site Web ou d'une appli mobile 9 Octobre 2007
Délai erreur pour fonction php FOPEN Développement d'un site Web ou d'une appli mobile 9 Juin 2007
Récuperer le texte d'une balise <h1> avec fopen ? Développement d'un site Web ou d'une appli mobile 27 Avril 2007
fopen pour tester la presence d'une image Développement d'un site Web ou d'une appli mobile 18 Novembre 2006
Fopen et ovh Développement d'un site Web ou d'une appli mobile 13 Décembre 2005
fopen fwrite fclose, comment les activer la? Administration d'un site Web 2 Août 2005
Toujours ce problème avec fopen() [RESOLU] Administration d'un site Web 27 Octobre 2004
WordPress créer un sitemap xml avec YOAST SEO Crawl et indexation Google, sitemaps 14 Août 2022
tarifs flux xml programme TV Sport Développement d'un site Web ou d'une appli mobile 14 Novembre 2021
Gestion sitemap.xml sur un site multilingue Crawl et indexation Google, sitemaps 5 Octobre 2020
Parser en php un fichier xml Développement d'un site Web ou d'une appli mobile 12 Juin 2020
Supprimer le sitemap HTML et garder le XML Crawl et indexation Google, sitemaps 27 Avril 2020