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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Configuration] D'où peut venir ce problème avec fopen ?


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Par défaut [Configuration] D'où peut venir ce problème avec fopen ?
    Bonjour a tous,
    J'ai sur mon site un bouton "Telecharger" qui permet aux utilisateurs de télécharger des videos(mp4) et sons(mp3). Ces videos sont situées sur deux serveurs différents(tous les deux en PHP 4.4.2)...le click sur le bouton télécharger lance l'execution du script suivant (insipré des FAQ developpez.com):
    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
     
    <?
    $Fichier_a_telecharger = $_REQUEST['file'];
    $chemin = $_REQUEST['path'];
     
    $buffer = '';
    if($fd = fopen ($chemin . $Fichier_a_telecharger, "r")) {
        while (!feof($fd)) {
            $buffer .= fgets($fd, 4096);
        }
        fclose ($fd);
    }
    $size = strlen($buffer);
     
    //
    // Quelques éléments nécessaires
    //
    //error_reporting(0);
    ini_set('zlib.output_compression', 0);
     
    header("Content-Type: application/octet-stream");
    header("Content-disposition: attachment; filename=".$Fichier_a_telecharger); 
    header("Content-Transfer-Encoding: binary\n"); // Surtout ne pas enlever le \n
    header("Content-Length: ".$size); 
    header("Pragma: no-cache"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
    header("Expires: 0"); 
    readfile($chemin . $Fichier_a_telecharger);
    exit(); 
    ?>
    Cela fonctionne super bien sur un serveur mais foire complètement sur l'autre (mp3 et mp4), pourtant les fichiers existent bien...
    Voici les erreurs que cela me renvoie sur le second serveurs :
    Warning: fopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in monrepertoire/script_dld.php on line 14

    Warning: fopen(http://monserveur/monrepertoire/mesm...nfichier.mp4): failed to open stream: Success in monrepertoire/script_dld.php on line 14

    Warning: ini_set(): Cannot change zlib.output_compression - headers already sent in monrepertoire/script_dld.php on line 26

    Et plusieurs warning de ce style :

    Warning: Cannot modify header information - headers already sent by (output started at monrepertoire/script_dld.php:14) in monrepertoire/script_dld.php on line 28
    Voila...je cherche depuis un moment mais rien de bien intéressant se mettre sous la dent...si vous avez une petite piste de solutions c'est avec grand plaisir!!

    Merci a vous!

  2. #2
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut poste le code
    Pouvez-vous poster le code du fichier monrepertoire/script_dld.php car l'erreur semble venir de là.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Par défaut
    Citation Envoyé par david drapeau
    Pouvez-vous poster le code du fichier monrepertoire/script_dld.php car l'erreur semble venir de là.
    Oui, c'est le code que j'ai cité tout en haut du 1er message (avec le fopen, les headers etc...), c'est celui la le script_dld.php...(dsl c'est vrai que c'était pas bien précisé)

  4. #4
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut
    J'ai l'impression qu'il manque des infos pour pouvoir t'aider. Je pense à une possibilité de configuration différente entre les deux serveurs. Les arborescences sont-elles identiques sur les deux serveurs?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Par défaut
    ouais c'est exactement les mêmes arborescences...et dans le message d'erreur, quand il me donne le lien http://info/fichier.mp4 du fichier mp4, que je copie ce lien et que je le mets dans le navigateur, il trouve bien la video...donc ça ne vient pas a priori de l'adressage du fichier, le chemin est bon...

  6. #6
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Tu es sur que ton php.ini et httpd.conf sont les mêmes sur les 2 serveurs ?

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Par défaut
    Le problème pourrait probabement venir des Headers, nécessaires pour lancer un téléchargement, il ne faut aucun code HTML avant les fonctions Headers sans quoi PHP ne pourra pas modifier les informations d'en-tête(header).

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par meliandah
    Le problème pourrait probabement venir des Headers, nécessaires pour lancer un téléchargement, il ne faut aucun code HTML avant les fonctions Headers sans quoi PHP ne pourra pas modifier les informations d'en-tête(header).
    Vous mettez la charrue avant les boeufs : il est normal de trouver cette erreur car si on regarde la chronologie des erreurs d'autres surviennent et sont signalées avant (donc envoyées au client).

    $_REQUEST cache quelle méthode $_POST ou $_GET ? Qui les fournit ? Un script ou l'utilisateur ? Par contre j'aimerais bien connaître les valeurs (cachez le domaine si vous voulez) de ces deux paramètres puisque apparemment fopen ne peut pas le résoudre. A priori allow_url_fopen est sur On, peut-on en avoir la confirmation également ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Par défaut
    Merci pour toutes vos réponses...je vais essayer de faire une petite synthèse des infos que vous me demandez :
    - Pour le $_REQUEST: quand l'utilisateur clique sur le bouton télécharger, ça appelle la page include/script_dld.php?file=[nomfichier]&path=[cheminmedia], c'est comme ça que je récupère les paramètres.
    - pour le php.ini j'ai fait une comparaison des deux fichiers (celui sur le serveur qui marche et celui sur le serveur qui ne marche pas), voici les quelques différences:
    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
     
    extension_dir = "./" //=> celui qui ne marche pas
    extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20020429 //=>celui qui marche
    //Les lignes suivante sont uniquement présentes sur celui qui marche
    extension="mmcache.so"
    mmcache.shm_size="64"
    mmcache.cache_dir="/tmp/mmcache"
    mmcache.enable="1"
    mmcache.optimizer="1"
    mmcache.check_mtime="1"
    mmcache.debug="0"
    mmcache.filter=""
    mmcache.shm_max="0"
    mmcache.shm_ttl="0"
    mmcache.shm_prune_period="0"
    mmcache.shm_only="1"
    mmcache.compress="1"
    mmcache.keys="shm_only"
    -La variable allow_url_fopen est bien a On sur les deux serveurs...

    Voila peut peut etre quelques infos importantes...
    Je vais aller maintenant jeter un oeil à l'httpd.conf des deux serveurs.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Par défaut
    Aarghh...J'ai fait une comparaison des deux fichiers httpd.conf, et il y'a trop de différences entre les deux...il doit y avoir des variables spécifiques a controler pour ce genre de problèmes, savez vous lesquelles en particulier?
    Merci.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Par défaut
    Résolu, en fait il fallait simplement renseigner le fichier /etc/hosts de la machine ou était le site (rajouter IP et nom du serveur ou étaient les videos et sons).
    Merci
    A+

  12. #12
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut ça fait plaisir
    Comme quoi en cherchant bien, un bon post qui peut en aider plus d'un.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec fopen
    Par morgan47 dans le forum Langage
    Réponses: 5
    Dernier message: 21/12/2006, 23h47
  2. problème avec fopen
    Par eoberlin dans le forum C++
    Réponses: 10
    Dernier message: 26/08/2006, 21h26
  3. Problème avec fopen
    Par Fonzy007 dans le forum Langage
    Réponses: 2
    Dernier message: 24/07/2006, 19h15
  4. [FTP] Problème avec fopen sur URL
    Par Biboune2008 dans le forum Langage
    Réponses: 14
    Dernier message: 22/06/2006, 18h00
  5. Problème avec fopen
    Par Binouce dans le forum C
    Réponses: 10
    Dernier message: 15/01/2006, 14h59

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