Précédent   Forum des professionnels en informatique > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/08/2007, 16h04   #1
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
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 :
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 :
Citation:
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!
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 16h48   #2
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut poste le code

Pouvez-vous poster le code du fichier monrepertoire/script_dld.php car l'erreur semble venir de là.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 16h53   #3
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
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é)
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 17h02   #4
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
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?
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 17h06   #5
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
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...
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 17h15   #6
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

Tu es sur que ton php.ini et httpd.conf sont les mêmes sur les 2 serveurs ?
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 17h55   #7
Membre confirmé
 
Inscription : mai 2006
Messages : 196
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 196
Points : 278
Points : 278
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).
meliandah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 18h56   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 09h31   #9
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
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 :
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.
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 09h14   #10
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
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.
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 10h28   #11
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
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+
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 10h31   #12
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut ça fait plaisir

Comme quoi en cherchant bien, un bon post qui peut en aider plus d'un.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h56.


 
 
 
 
Partenaires

Hébergement Web