IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[FTP] Problème avec fopen sur URL


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Points : 1
    Points
    1
    Par défaut [FTP] Problème avec fopen sur URL
    Linux Debian
    apache2
    PHP Version 4.3.10-16

    Bonjour,

    J'essaie d'utiliser la fonction fopen() mais ça ne marche pas "failed to open stream: HTTP request failed! ÃM@ in.." .

    J'ai tout essayé mais en vain. Surtout que mon script fonctionne très bien sur une autre machine sous windows Xp avec easyphp.

    Merci de votre aide,

    Stephane

    Pour info, je suis un novice donc syez indulgent ...

    Voici mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    <?php
    include("conf.php");
    include("functions.php");
       $jour=date("j");
       $mois=date("m");
       $annee=date("y");
    //***********************************************************************************************************
    // Fonction permettant de connaitre le nombre de jour dans le mois
    //***********************************************************************************************************   
       function DaysInMonth($mois,$an) {
       if($mois==2)
          if($an%4) return 28;
          elseif($an%100) return 29;
          elseif($an%1000) return 28;
          else return 29;
       elseif(($mois==4)||($mois==6)
          ||($mois==9)||($mois==11)) return 30;
       return 31; 
       }
    //***********************************************************************************************************  
     
     if ($jour=='01')
     {
      $mois=$mois-1;
      $jour=DaysInMonth($mois,$annee);
     }
     else
     {
      $jour=$jour-1;
     }
      $today=$jour."/".$mois."/".$annee;
     
    //*****************************************************************************************************************************
    // création des variables des codes devise
    //*****************************************************************************************************************************      
          //========================================
           // Se connecte à la base
           //========================================
           $db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
           //========================================
           // Execute la requête recherchant les Taux enregistrés en base
           //========================================
           $requete1=mysql_db_query($sql_bdd,"SELECT * FROM tbl_nf_devises",$db_link);
           //=========================================
           // initialisation des variables PHP
           //=========================================
       $i=0;
     
     
       //créé un tableau pour afficher les devises
       $Tableau_Devise=array();
     
       reset($Tableau_Devise);
       array_push($Tableau_Devise,' ');
     
        $Tableau_id=array();
       reset($Tableau_id);
       array_push($Tableau_id,' ');
       //=========================================
       // Boucle sur les lignes trouvé
       //=========================================
       while ($row=mysql_fetch_row($requete1))
       {
         $i=$i++;
         $id_devise[$i]=$row[0];
         $symbole[$i]=$row[1];
     
        if ($symbole[$i]=='EUR')
        {
        }
        else
        {
        array_push($Tableau_Devise,$symbole[$i]);
        array_push($Tableau_id,$id_devise[$i]);
     
         }
       }
    //*****************************************************************************************************************************    
        $date=$annee."-".$mois."-".$jour;
     
           for ($nb=1;$nb<3;$nb++)
          {
            //$fichier = "<a href="http://www.oanda.com/convert/fxdaily?value=1&date=" target="_blank">http://www.oanda.com/convert/fxdaily?value=1&date=".$mois."%2F".$jour."%2F".$annee."&date_fmt=us&lang=fr&exch=EUR&exch2=&expr2=&dest=Obtenir+la+table&sel_list=ADF_ADP_AED_AFA_ALL_ANG_AON_ARS_ATS_AUD_AWG_BBD_BDT_BEF_BGL_BHD_BIF_BMD_BND_BOB_BRL_BSD_BTN_BWP_BZD_CAD_CHF_CLP_CNY_COP_CRC_CSD_CUP_CVE_CYP_CZK_DJF_DKK_DOP_DZD_ECS_EEK_EGP_ESP_ETB_EUR_FIM_FJD_FKP_FRF_GBP_GHC_GIP_GMD_GNF_GRD_GTQ_GYD_HKD_HNL_HRK_HTG_HUF_IDR_IEP_ILS_INR_IQD_IRR_ISK_ITL_JMD_JOD_JPY_KES_KHR_KMF_KPW_KRW_KWD_KYD_KZT_LAK_LBP_LKR_LRD_LSL_LTL_LUF_LVL_LYD_MAD_MGA_MGF_MMK_MNT_MOP_MRO_MTL_MUR_MVR_MWK_MXN_MYR_MZM_NAD_NGN_NIO_NLG_NOK_NPR_NZD_OMR_PAB_PEN_PGK_PHP_PKR_PLN_PTE_PYG_QAR_ROL_RUB_SAR_SBD_SCR_SDD_SDP_SEK_SGD_SHP_SIT_SKK_SLL_SOS_SRD_SRG_STD_SVC_SYP_SZL_THB_TND_TOP_TRL_TRY_TTD_TWD_TZS_UAH_UGS_USD_UYP_VEB_VND_VUV_WST_XAF_XAG_XAU_XCD_XEU_XOF_XPD_XPF_XPT_YER_YUN_ZAR_ZMK_ZWD&format=CSV&redirected=1</a>";  
          $fichier = "<a href="http://www.oanda.com/" target="_blank">http://www.oanda.com/</a>";  
          $fp = fopen($fichier, "rb");  //ouverture du fichier en lecture
     
          $chaine = $Tableau_Devise[$nb];  //chaine à rechercher (@, \.fr, \.com, ...) 
     
           $ligne=0; 
             while (!feof($fp)) 
             { 
              $page = fgetss($fp, 4096); 
              $ligne = $ligne+1; 
              if ($news = ereg($chaine, $page, $regs)) 
              {
                //PRINT "ligne n° ".$ligne." :".$page." <br>"; 
                $str=$page;
                $tableau = $str;  
                $cours = explode(",", $tableau);
     
                while(list($indice,$valeur)=each($cours))
                {
                 $test=$valeur;
                }
     
                $Message="INSERT INTO tbl_nf_details_devises";
                $Message=$Message." (id_devise,date_cours,Taux)";
                $Message=$Message." VALUES ('$Tableau_id[$nb]','$date','$test')";
     
                $Select=mysql_db_query($sql_bdd,$Message,$db_link) or die ('Erreur'.$Message. ' '.mysql_error());
     
              } 
              echo str_pad(" ",300);
               echo "\n";
               ob_flush();
               flush();
             }
           fclose($fp);
           }
    mysql_close();
    ?>

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    $fichier doit contenir le lieux de ton fichier :
    $fichier = "../src/index.php";

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    c'est une url

  4. #4
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Oui mais l'URL n'est pas le nom d'un fichier !!!

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    non c'est une page internet

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Ton navigateur charge automatiquement le fichier index.php (par ex.) avec une url comme ca. Je ne pense pas que fopen le fait.

  7. #7
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    fopen() est une fonction qui nécessite d'avoir accés au fichier non pas par une page internet mais par un ftp. Elle peut donc uniquement ouvrir les fichiers qui se trouvent sur son propre serveur.
    Sinon n'importe quel pirate pourrait ouvrir les fichiers php et piquer le code...

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    si moi j'y arrive. j'ouvre la page et j'utilise le contenu de la page (et non pas le script)

  9. #9
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Cela dépend du type de fichier !!

    http://monsite.com/index.txt (ou.html) ou peut le lire sans probléme !

    mais
    http://monsite.com/index.php si ce n'est pas ton site c'est impossible à lire ! Tu ne vera que tu html !

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    voir le html me suffit puisque c'est ce que j'ai besoin.
    J'ai besoin de voir le résultat et non pas le script.

  11. #11
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Ah d'accord dans ce cas, il faut juste faire :
    $fic = fopen("http://www.blabla.net/forums/showthread.php?t=13432358", 'rb');
    Normalement php reconnait le protocole et essaye de l'ouvrir suivant celui-ci.

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    et bien non c'est ça mon problème. Il me met tjrs le même message d'erreur : failed to open stream: HTTP request failed! ÃM@ in /var/www/notedefrais/fr/cron_daily.php on line 90

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Peut-être ca:

    Si PHP a décidé que filename spécifie un protocole enregistré, et que ce protocole est enregistré comme un protocole réseau, PHP s'assurera que la directive allow_url_fopen est activée. Si elle est inactive, PHP va émettre une alerte et l'ouverture va échouer.

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    j'ai vérifié dans le php.ini mais allow url est sur On

  15. #15
    Membre régulier Avatar de thanaos
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 76
    Points
    76
    Par défaut
    Bonjour à tous.
    Je me permets de relancer ce fil car je rencontre le même problème avec la config suivante :
    Config : php 4.4.2 / apache 1.3.34 / Windows Server 2003
    extentions activées : openssl 0.9.8a
    dans phpinfo absence de https :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Registered PHP Streams - php, http, ftp, compress.zlib
    Voilà le résultat sur un fopen d'une url en http :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    500 Server Error
    Le serveur HTTP a rencontré une condition inattendue qui l'a empêché de traiter la requête.
    |code=SERVER_RESPONSE_CLOSE| The server closed
    the connection while reading the response. Contact your system administrator.
    Voilà le résultat sur un fopen d'une url en https:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: fopen(https://serveur/filename.htm): failed to open
    stream: Invalid argument in fichier.php
    Merci de m'éclairer de vos lumières... je sèche grave comme dirais ma fille de 11ans.
    Apache2 / PHP5.4 / MySQL 5/ Win7/RedHat

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/02/2008, 21h40
  2. [FTP] Problème avec fopen ou mon hébergeur ?
    Par YagamiLight dans le forum Langage
    Réponses: 2
    Dernier message: 06/07/2007, 17h06
  3. Problèmes avec INTERSECT sur MYSQL
    Par zarbydigital dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/09/2005, 13h18
  4. Problème avec OnDrawColumnCell sur un DBGrid
    Par n1portki dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/09/2005, 04h18
  5. Problème avec RDTSC sur K6-III
    Par le mage tophinus dans le forum x86 32-bits / 64-bits
    Réponses: 17
    Dernier message: 30/09/2003, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo