opobre Posté 7 Septembre 2006 Posté 7 Septembre 2006 Bonjour, Je développe un site sous easyphp installé sur un xp pro. J'essaie de faire un download d'un fichier temporaire mais je me heurte systématiquement à un message d'erreur. Jai deux fichier, 1 nommé seltrac.php qui crée le fic temporaire et fait appel au second fichier download.php. le code du seltrac.php (pour ce qui nous intéresse) : <?php switch(strrchr(basename($dwn), ".")) { case ".gz": $type = "application/x-gzip"; break; case ".tgz": $type = "application/x-gzip"; break; case ".zip": $type = "application/zip"; break; case ".pdf": $type = "application/pdf"; break; case ".png": $type = "image/png"; break; case ".gif": $type = "image/gif"; break; case ".jpg": $type = "image/jpeg"; break; case ".txt": $type = "text/plain"; break; case ".htm": $type = "text/html"; break; case ".html": $type = "text/html"; break; default: $type = "application/octet-stream"; break; } header("Content-disposition: attachment; filename=$dwn"); header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: $type\n"); header("Content-Length: ".filesize($chemin . $dwn)); header("Pragma: no-cache"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); header("Expires: 0"); readfile($chemin . $dwn); ?> les messages d'erreur : Notice: Undefined variable: dwn in c:\program files\easyphp1-8\www\download.php on line 2 Notice: Undefined variable: dwn in c:\program files\easyphp1-8\www\download.php on line 17 Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\download.php:2) in c:\program files\easyphp1-8\www\download.php on line 17 ../..Notice: Undefined variable: chemin in c:\program files\easyphp1-8\www\download.php on line 24 Notice: Undefined variable: dwn in c:\program files\easyphp1-8\www\download.php on line 24 merci d'avance pour le coup de main et pour l'explication qui ira avec (j'aime bien me couché moins bête que je me suis levé) <edit=Dan: merci d'utiliser les balises CODE et CODEBOX pour les citations de messages. J'ai supprimé une partie de tes erreurs, parce que ce n'est que la première qui compte dans ton cas >
Dan Posté 7 Septembre 2006 Posté 7 Septembre 2006 Bonjour, Remplace tes variables $dwn, $chemin et $tmpfname par $_GET['dwn'], $_GET['chemin'] et $_GET['tmpfname'] dans ton fichier download.php. Les messages "cannot modify header" viennent du fait de l'affichage te ta première erreur. On ne peut donc plus envoyer de header.
opobre Posté 8 Septembre 2006 Auteur Posté 8 Septembre 2006 Bonjours Dan, merci, je teste et je te tiens au courant
opobre Posté 8 Septembre 2006 Auteur Posté 8 Septembre 2006 Dan, nouveau message d'erreur : <br /> <b>Warning</b>: filesize(): Stat failed for C:\Program Files\EasyPHP1-8\www\C:\Program Files\EasyPHP1-8\www\fic3B.tmp (errno=2 - No such file or directory) in <b>c:\program files\easyphp1-8\www\download.php</b> on line <b>20</b><br /> <br /> <b>Warning</b>: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\download.php:20) in <b>c:\program files\easyphp1-8\www\download.php</b> on line <b>20</b><br /> <br /> <b>Warning</b>: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\download.php:20) in <b>c:\program files\easyphp1-8\www\download.php</b> on line <b>21</b><br /> <br /> <b>Warning</b>: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\download.php:20) in <b>c:\program files\easyphp1-8\www\download.php</b> on line <b>22</b><br /> <br /> <b>Warning</b>: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\download.php:20) in <b>c:\program files\easyphp1-8\www\download.php</b> on line <b>23</b><br /> <br /> <b>Warning</b>: readfile(C:\Program Files\EasyPHP1-8\www\C:\Program Files\EasyPHP1-8\www\fic3B.tmp): failed to open stream: Invalid argument in <b>c:\program files\easyphp1-8\www\download.php</b> on line <b>24</b><br /> Si j'ai bien compris, il ne trouve pas le .tmp sous ce répertoire. Il est pourtant bien présent avec le bon nom. Quelque chose m'échappe.
NorSeb Posté 8 Septembre 2006 Posté 8 Septembre 2006 Bonjour, Es-tu certain que ton script peut atteindre le fichier dans le dossier C:\Program Files\EasyPHP1-8\www ?? Est-il créé ? Parce qu'il semble que filesize() ne trouve pas le fichier (No such file or directory)
opobre Posté 8 Septembre 2006 Auteur Posté 8 Septembre 2006 le script ce trouve sous ce répertoire ainsi que le fichier. Effectivement il semble qu'il ne le trouve pas. Serait-ce un problème de droits sur le fichier ? (mais dans ce cas comment aurait-il pu être créer ?)
NorSeb Posté 8 Septembre 2006 Posté 8 Septembre 2006 A mon avis, il y a danger à mettre un chemin absolu dans ce cas... A priori le script php ne peut "atteindre" qu'un espace restreint du serveur. Essaye sans mettre de chemin du tout, ca creera le fichier dans le même répertoire que le script.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant