Bonjour,
C'est encore moi, désolé pour mes questions mais j'apprends ;)
Je ne sais pas si je suis dans la bonne section mais le fichier qui pose probleme est en php.
J'ai une erreur 502 Bad Gateway sur de mes pages, cette page contient que du PHP.
Dans ce fichier .php je recois des id en méthode GET je fais 2 selects depuis la bdd de 2 table différentes pour recuperer les informations des id, je créé deux fichiers xml d'environ 4ko pour l'un et 20 a 40ko pour l'autre, ensuite je mets dans un zip 10 fichiers dont les 2 cités ce qui fait environ 50 a 80ko au total non compressé, compressé cela represente environ 8ko.
Je ne sais pas vraiment ce que je suis autorisé a faire coté server mais sur mon wamp aucun probleme tout fonctionne.
Je me suis renseigné sur internet il y a plusieurs raisons, mais en ce qui me concerne il y a des chances que l'hebergeur me bloque cette page ou les requettes lié a cette page, peut etre parcequ'il y a des erreurs ou un probeleme de securité ou de lenteur.
Je suis chez OVH en mutualisé, le support ne repond pas a mes questions malheureusement.
Cluster 028
France FR
Datacentre Gravelines 1
IPv4 51.91.236.193
IPv6 2001:41d0:301::28
Voici une partie du code de cette page.
<?php
include 'inc/bdd.php';?>
<!-- Génération du fihier xml bdd stage-->
<?php
if (isset($_GET['matchwinmss'])) {
$allstage = $_GET['matchwinmss'];
$stages = $bdd->prepare('SELECT * FROM stages WHERE matchsid = ? ');
$stages->execute(array($allstage));
$file_out = __DIR__ . "/WinMSS/";
// $dir_out = "WinMSS";
if (!file_exists($file_out)) {
@mkdir($file_out);
}
$dir = $file_out;
if (!file_exists($dir)) {
mkdir($dir);
}
$file = $dir . "/STAGE.XML";
$xml = "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
<rs:data>";
foreach( $stages->fetchAll() as $id ) {
$nomstage = $id['nomstage'];
$item = "<z:row
StageId='" . $numstage . "'
/>";
$xml .= $item;
}
$xml .= "</rs:data></xml>";
file_put_contents($file, $xml);
// Génération du fihier xml bdd match
$idmatch = $_GET['matchwinmss'];
$matches = $bdd->prepare('SELECT * FROM matchs WHERE id = ?');
$matches->execute(array($idmatch));
$file_out = __DIR__ . "/WinMSS/";
// $dir_out = "WinMSS";
if (!file_exists($file_out)) {
@mkdir($file_out);
}
$dir = $file_out;
if (!file_exists($dir)) {
mkdir($dir);
}
$file = $dir . "/THEMATCH.XML";
$xml = "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
<rs:data>";
foreach( $matches->fetchAll() as $idmatches ) {
$matchsid = $idmatches['matchid'];
$item = "<z:row
MatchId='" . $matchsid . "'
/>";
$xml .= $item;
}
$xml .= "</rs:data></xml>";
file_put_contents($file, $xml);
// création du fichier zip
$files = array (
'WinMSS/STAGE.xml',
'WinMSS/THEMATCH.xml',
'WinMSS/CLASSIFY.xml',
'WinMSS/CLUB.xml',
'WinMSS/ENROLLED.xml',
'WinMSS/MEMBER.xml',
'WinMSS/SCORE.xml',
'WinMSS/SQUAD.xml',
'WinMSS/TAG.xml',
'WinMSS/TEAM.xml');
$zipname = 'WinMSS.zip';
$zip = new ZipArchive;// Load zip librairy
$zip->open($zipname, ZIPARCHIVE::CREATE);
foreach ($files as $file) // membres/stages
{
$zip->addFile($file); // Adding filename into zip
}
$zip->close();
//push to download the zip
header('Content-Disposition: attachement; filename='.$zipname);
header('Content-type: application/zip');
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
//Remove zip file is exists in temp path
unlink($zipname);
exit();
}
Merci de votre retour.
Hello les amis,
J'ai enfin réussi, voici le code qui fonctionne, si vous crompenez pourquoi exactement je suis tout ouie!
Je pense que par rapport a mon wamp le dossier home est dans www/repetoiredemonsite/toutlesfichiers alors que sur le server de l'hebergeur c'est directement www/toutlesfichiers voila, mais si vous avez une suggestions a faire sur le code pour l'améliorer je prends, merci beaucoup a tous!
$zipname = "WinMSS.zip";
$zip = new ZipArchive();// Load zip librairy
$zip->open($zipname, ZIPARCHIVE::CREATE);
$filestest = scandir('WinMSS');
unset($filestest[0], $filestest[1]);
foreach ($filestest as $fileAll)
{
$zip->addFile("WinMSS/{$fileAll}", "WinMSS/{$fileAll}"); // Adding filename into zip
}
$zip->close();
//push to download the zip
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachement; filename='.$zipname);
header('Content-type: application/zip');
readfile($zipname);
//Remove zip file is exists in temp path
unlink($zipname);
exit();
}
Bonjour,
Il faut que tu debug par étape... n'hésite pas à utiliser la fonction die() qui permet d'intérompre l'excution du script, c'est pratique pour identifier une portion de code qui pose problème... d'ailleur à ta place je commencerais par la mettre tout au début du fichier pour m'assurer que l'erreur n'est pas levée en amont..
Reviens quand tu aura idientifier la zone où sa plante...
Hello,
J'ai tout testé et ça plante au niveau de la ligne: " header('Content-Length: ' . filesize($zipname)); ", lorque je mets le vardump apres cette ligne.
$zip->close();
//push to download the zip
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($zipname));
var_dump($zipname);
die;
readfile($zipname);
//Remove zip file is exists in temp path
unlink($zipname);
exit();
}
J'ai essayé ça mais fonctionne pas non plus:
$zipname = 'WinMSS.zip';
$zip = new ZipArchive;// Load zip librairy
$zip->open($zipname, ZIPARCHIVE::CREATE);
foreach ($files as $file) // membres/stages
{
$zip->addFile($file); // Adding filename into zip
}
$zip->close();
//push to download the zip
$size = filesize($zipname);
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Transfer-Encoding: binary');
header("Content-length: $size");
var_dump($zipname);
die;
readfile($zipname);
//Remove zip file is exists in temp path
unlink($zipname);
exit();
}
J'ai modifié le code comme ci-dessous, je ne comprends pas le message d'erreur que ça me donne:
Il fait un readfile sur le bon fichier mais il ne trouve pas de fichier ou de repertoire de "/home/tsvstageei/www/winmssmatch.php" !
Message d'erreur:
<b>Warning</b>: readfile(/home/tsvstageei/www/WinMSS/WinMSS.zip): failed to open stream: No such file or directory in <b>/home/tsvstageei/www/winmssmatch.php</b> on line <b>325</b><br />
<b>Warning</b>: unlink(/home/tsvstageei/www/WinMSS/WinMSS.zip): No such file or directory in <b>/home/tsvstageei/www/winmssmatch.php</b> on line <b>326</b><br />
Code:
$files = array (
'WinMSS/STAGE.xml',
'WinMSS/THEMATCH.xml',
'WinMSS/CLASSIFY.xml',
'WinMSS/CLUB.xml',
'WinMSS/ENROLLED.xml',
'WinMSS/MEMBER.xml',
'WinMSS/SCORE.xml',
'WinMSS/SQUAD.xml',
'WinMSS/TAG.xml',
'WinMSS/TEAM.xml');
$zipname = 'WinMSS.zip';
$zipfolder = __DIR__ . "/WinMSS/";
$zip = new ZipArchive;// Load zip librairy
if ($zip->open($zipname, ZIPARCHIVE::CREATE))
{
foreach ($files as $fileall)
{
$zip->addFile($zipfolder.$fileall); // Adding filename into zip
}
$zip->close();
//push to download the zip
header('Content-Transfer-Encoding: binary');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-type: application/zip');
readfile($zipfolder .$zipname);
unlink($zipfolder .$zipname);
exit();
}
}
Hello,
J'ai l'impression que le foreach ne fonctionne pas, si qulqu'un sais si en fonction du server et version php il y a des différences de syntaxe?
Sur Wamp j'utilise la version php 7.2.18 (J'ai tester la version php 7.3.5 pareil)
Zip enabled
Zip version 1.15.4
Libzip version 1.4.0
Sur le server de l'hébergeur la version php 7.3.16
Zip enabled
Zip version 1.15.4
Libzip version 0.11.2
Code identique sur wamp et sur le server d'hébergement, et réponse différentes:
Je vois 'numFiles' => int 1 coté wamp
Je vois ["numFiles"]=> int(0) coté hébergeur (Donc il n'y a pas de fichier ?)
Résltat du server hébergement:
object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
Résltat du server wamp:
C:\wamp64\www\TsvStage\winmssmatch.php:317:
object(ZipArchive)[4]
public 'status' => int 0
public 'statusSys' => int 0
public 'numFiles' => int 1
public 'filename' => string 'C:\wamp64\www\TsvStage\WinMSS.zip' (length=48)
public 'comment' => string '' (length=0)
code
$files = array (
'WinMSS/STAGE.xml',
'WinMSS/THEMATCH.xml',
'WinMSS/CLASSIFY.xml',
'WinMSS/CLUB.xml',
'WinMSS/ENROLLED.xml',
'WinMSS/MEMBER.xml',
'WinMSS/SCORE.xml',
'WinMSS/SQUAD.xml',
'WinMSS/TAG.xml',
'WinMSS/TEAM.xml');
$zipname = 'WinMSS.zip';
$zip = new ZipArchive;// Load zip librairy
$zip->open($zipname, ZIPARCHIVE::CREATE);
foreach ($files as $file)
{
$zip->addFile($file); // Adding filename into zip
echo "<pre>";
var_dump($zip); // or var_dump($data);
echo "</pre>";
die();
salut lolo3129,
Oui tu as raison sur les différents essaies plus bas, mais pas dans le premier code que j'ai mis et qui fonctionne sur wamp.
dans le premier code coté hebergeur je pense qu'il ne trouve pas le fichier zip ou le fichier zip est vide, d'où l'erreur, je pense !
Hello j'ai corrigé le inculde comme tu me l'as dit merci.
Le fichier php est dans www/winmssmatch.php
Les fichiers xml sont dans /www/WinMSS/STAGE.xml ...
L'arborescence du ftp est /www/WinMSS/ et je vois bien les fichiers XML a l'intérieur et ils sont bien renseignés, danc la premiere partie du code fonctionne.
je viens de tester avec les nom de fichier comme ci dessous est pareil meme message d'erreur:
$zipname = 'WinMSS/WinMSS.zip';
J'ai tester aussi ça mais non plus:
$files = array (
'WinMSS/STAGE.xml',
'WinMSS/THEMATCH.xml',
'WinMSS/CLASSIFY.xml',
'WinMSS/CLUB.xml',
'WinMSS/ENROLLED.xml',
'WinMSS/MEMBER.xml',
'WinMSS/SCORE.xml',
'WinMSS/SQUAD.xml',
'WinMSS/TAG.xml',
'WinMSS/TEAM.xml');
$zipname = 'WinMSS/WinMSS.zip';
$zip = new ZipArchive;// Load zip librairy
$zip->open($zipname, ZIPARCHIVE::CREATE);
foreach ($files as $fileAll) // membres/stages
{
$zip->addFile($fileAll); // Adding filename into zip
// echo "<pre>";
// var_dump($zip);
// echo "</pre>";
// die();
}
$zip->close();
//push to download the zip
header('Content-Disposition: attachement; filename='.$zipname);
header('Content-type: application/zip');
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
//Remove zip file is exists in temp path
unlink($zipname);
exit();
}
J'ai renomé toutes variables qui portaient le meme nom et fait le dump a différent endroit voici le résultat:
Désolé ça fait beaucoup de code mais la j'avoue que je cromprends pas trop ce qui ce passe?
Code:
<?php
include 'inc/bdd.php';
// Génération du fihier xml via match
if (isset($_GET['matchwinmss'])) {
$allstage = $_GET['matchwinmss'];
$stages = $bdd->prepare('SELECT * FROM stages WHERE matchsid = ? ');
$stages->execute(array($allstage));
$file_out = __DIR__ . "/WinMSS/";
// $dir_out = "WinMSS";
if (!file_exists($file_out)) {
@mkdir($file_out);
}
$dir = $file_out;
if (!file_exists($dir)) {
mkdir($dir);
}
$file_stage = $dir . "/STAGE.XML";
$xml = "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
....
</s:Schema>
<rs:data>";
foreach( $stages->fetchAll() as $id ) {
$nomstage = $id['nomstage'];
$numstage = $id['numstage'];
$FirearmId = $id['FirearmId'];
$TrgtTypeId = $id['TrgtTypeId'];
$ScoringId = $id['ScoringId'];
$StartOn = $id['StartOn'];
$StartPos = $id['StartPos'];
$Descriptn = $id['Descriptn'];
$CourseId = $id['CourseId'];
$matchsid = 1;
$MaxPoints = $id['MaxPoints'];
$MinRounds = $id['MinRounds'];
$TrgtPaper = $id['TrgtPaper'];
$TrgtPopper = $id['TrgtPopper'];
$TrgtPlates = $id['TrgtPlates'];
$TrgtPenlty = $id['TrgtPenlty'];
$Location = $id['Location'];
$StringCnt = $id['StringCnt'];
$ReportOn = $id['ReportOn'];
$IcsStageId = $id['IcsStageId'];
$Remove = $id['Remove'];
$TrgtVanish = $id['TrgtVanish'];
$item = "<z:row
MatchId='" . $matchsid . "'
StageId='" . $numstage . "'
StageName='" . addslashes($nomstage) . "'
Location='" . addslashes($Location) . "'
FirearmId='" . $FirearmId . "'
CourseId='" . $CourseId . "'
ScoringId='" . $ScoringId . "'
TrgtTypeId='" . $TrgtTypeId . "'
IcsStageId='" . $IcsStageId . "'
Remove='" . $Remove . "'
TrgtPaper='" . addslashes($TrgtPaper) . "'
TrgtPopper='" . addslashes($TrgtPopper) . "'
TrgtPlates='" . addslashes($TrgtPlates) . "'
TrgtVanish='" . addslashes($TrgtVanish) . "'
TrgtPenlty='" . addslashes($TrgtPenlty) . "'
MinRounds='" . $MinRounds . "'
ReportOn='" . $ReportOn . "'
MaxPoints='" . $MaxPoints . "'
StartPos='" . $StartPos . "'
StartOn='" . addslashes($StartOn) . "'
StringCnt='" . addslashes($StringCnt) . "'
Descriptn='" . addslashes($Descriptn) . "'
/>";
$xml .= $item;
}
$xml .= "</rs:data></xml>";
file_put_contents($file_stage, $xml);
$idmatch = $_GET['matchwinmss'];
$matches = $bdd->prepare('SELECT * FROM matchs WHERE id = ?');
$matches->execute(array($idmatch));
$file_out = __DIR__ . "/WinMSS/";
// $dir_out = "WinMSS";
if (!file_exists($file_out)) {
@mkdir($file_out);
}
$dir = $file_out;
if (!file_exists($dir)) {
mkdir($dir);
}
$file_match = $dir . "/THEMATCH.XML";
$xml = "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
....
</s:Schema>
<rs:data>";
foreach( $matches->fetchAll() as $idmatches ) {
$matchsid = $idmatches['matchid'];
$nommatch = $idmatches['name'];
$MatchDt = $idmatches['matchdate'];
$MatchLevel = $idmatches['matchlevel'];
$CountryId = $idmatches['CountryId'];
$FirearmId = $idmatches['firearmtype'];
$SquadCount = $idmatches['SquadCount'];
$MatchDirector = $idmatches['MatchDirector'];
$RangeMaster = $idmatches['RangeMaster'];
$StatsDirector = $idmatches['StatsDirector'];
$StatsDirector = $idmatches['StatsDirector'];
$item = "<z:row
MatchId='" . $matchsid . "'
Chrono='" . 'False' . "'
MatchName='" . $nommatch . "'
MatchDt='" . $MatchDt . 'T00:00:00' . "'
MatchLevel='" . $MatchLevel . "'
CountryId='" . $CountryId . "'
FirearmId='" . $FirearmId . "'
SquadCount='" . $SquadCount . "'
MD='" . $MatchDirector . "'
RM='" . $RangeMaster . "'
SD='" . $StatsDirector . "'
/>";
$xml .= $item;
}
$xml .= "</rs:data></xml>";
file_put_contents($file_match, $xml);
$files_list = array (
'WinMSS/STAGE.xml',
'WinMSS/THEMATCH.xml',
'WinMSS/CLASSIFY.xml',
'WinMSS/CLUB.xml',
'WinMSS/ENROLLED.xml',
'WinMSS/MEMBER.xml',
'WinMSS/SCORE.xml',
'WinMSS/SQUAD.xml',
'WinMSS/TAG.xml',
'WinMSS/TEAM.xml');
echo "<pre>";
var_dump($files_list);
echo "</pre>";
$zipname = 'WinMSS.zip';
$zip = new ZipArchive;// Load zip librairy
$zip->open($zipname, ZIPARCHIVE::CREATE);
foreach ($files_list as $file_all)
{
$zip->addFile($file_all); // Adding filename into zip
echo "<pre>";
var_dump($file_all);
echo "</pre>";
echo "<pre>";
var_dump($zip);
echo "</pre>";
}
$zip->close();
//push to download the zip
header('Content-Disposition: attachement; filename='.$zipname);
echo "<pre>";
var_dump($zipname);
echo "</pre>";
echo "<pre>";
var_dump($zip);
echo "</pre>";
die();
header('Content-type: application/zip');
// header('Content-Length: ' . filesize($zipname));
readfile($zipname);
//Remove zip file is exists in temp path
unlink($zipname);
exit();
}
Résultat des dump:
<pre>array(10) {
[0]=>
string(16) "WinMSS/STAGE.xml"
[1]=>
string(19) "WinMSS/THEMATCH.xml"
[2]=>
string(19) "WinMSS/CLASSIFY.xml"
[3]=>
string(15) "WinMSS/CLUB.xml"
[4]=>
string(19) "WinMSS/ENROLLED.xml"
[5]=>
string(17) "WinMSS/MEMBER.xml"
[6]=>
string(16) "WinMSS/SCORE.xml"
[7]=>
string(16) "WinMSS/SQUAD.xml"
[8]=>
string(14) "WinMSS/TAG.xml"
[9]=>
string(15) "WinMSS/TEAM.xml"
}
</pre><pre>string(16) "WinMSS/STAGE.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(19) "WinMSS/THEMATCH.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(19) "WinMSS/CLASSIFY.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(15) "WinMSS/CLUB.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(19) "WinMSS/ENROLLED.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(17) "WinMSS/MEMBER.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(16) "WinMSS/SCORE.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(16) "WinMSS/SQUAD.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(14) "WinMSS/TAG.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(15) "WinMSS/TEAM.xml"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(31) "/home/tsvstageei/www/WinMSS.zip"
["comment"]=>
string(0) ""
}
</pre><pre>string(10) "WinMSS.zip"
</pre><pre>object(ZipArchive)#4 (5) {
["status"]=>
int(0)
["statusSys"]=>
int(0)
["numFiles"]=>
int(0)
["filename"]=>
string(0) ""
["comment"]=>
string(0) ""
}
</pre>
Hello,
J'ai ajouter un file_exists dans le code et j'ai bien un retour "File does not exist" que je fais passer la variable de session!
Je pense qu'il y a bien un souci avec le foreach ou le addFile?
Quen pensez-vous?
$zip = new ZipArchive;// Load zip librairy
$zipname = 'WinMSS.zip';
if($zip->open($zipname, ZIPARCHIVE::CREATE)!==TRUE)
{
// Opening zip file to load files
$_SESSION ['messagenok'] = "Sorry ZIP creation failed at this time";
header("Location:matchs3.php");
}
foreach($files_list as $file_all){
$zip->addFile($file_all); // Adding files into zip
$zip->close();
if(file_exists($zipname))
{
// push to download the zip
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zipname.'"');
readfile($zipname);
// remove zip file is exists in temp path
unlink($zipname);
}
$_SESSION ['messagenok'] = "File does not exist!";
header("Location: matchs3.php");
}
Merci pour ton retour lolo,
Le fichier php est dans www/winmssmatch.php
Les fichiers xml sont dans /www/WinMSS/STAGE.xml ...
L'arborescence du ftp est /www/WinMSS/ et je vois bien les fichiers XML a l'intérieur et ils sont bien renseignés,
ç'est pareil, j'ai le meme comportement:
$zip = new ZipArchive;// Load zip librairy
$zipname = 'WinMSS.zip';
if($zip->open($zipname, ZIPARCHIVE::CREATE)!==TRUE)
{
// Opening zip file to load files
$_SESSION ['messagenok'] = "Sorry ZIP creation failed at this time";
header("Location:matchs3.php");
}
foreach($files_list as $file_all){
$zip->addFile($file_all); // Adding files into zip
}
$zip->close();
if(file_exists($zipname))
{
// push to download the zip
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zipname.'"');
readfile($zipname);
// remove zip file is exists in temp path
unlink($zipname);
}else{
$_SESSION ['messagenok'] = "File does not exist!";
header("Location: matchs3.php");
die();
}
}
J'ai aussi testé sur un fichier avec le chemin absolu et sans, encore pareil:
Je ne sais plus quoi faire!
$zip = new ZipArchive;// Load zip librairy
$zipname = 'WinMSS.zip';
$zip->open($zipname, ZIPARCHIVE::CREATE);
$zip->addFile(__DIR__ . '/WinMSS/STAGE.xml'); // Adding files into zip
$zip->close();
// push to download the zip
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename='. $zipname);
readfile(__DIR__ . '/' . $zipname);
// remove zip file is exists in temp path
unlink(__DIR__ . '/' . $zipname);
}
ok mais la page phpinfo est très grande.
quelle partie?
Voici la partie zip
zip
Zip enabled
Zip version 1.15.4
Libzip version 0.11.2
zlib
ZLib Support enabled
Stream Wrapper compress.zlib://
Stream Filter zlib.inflate, zlib.deflate
Compiled Version 1.2.8
Linked Version 1.2.8
Directive Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level -1 -1
zlib.output_handler no value no value
j'ai fais un autre teste:
Voici le résultat:
<html><body><h1>502 Bad Gateway</h1>
The server returned an invalid or incomplete response.
</body></html>
Les commandes:
$files_list = array (
'WinMSS/STAGE.xml',
'WinMSS/THEMATCH.xml',
'WinMSS/CLASSIFY.xml',
'WinMSS/CLUB.xml',
'WinMSS/ENROLLED.xml',
'WinMSS/MEMBER.xml',
'WinMSS/SCORE.xml',
'WinMSS/SQUAD.xml',
'WinMSS/TAG.xml',
'WinMSS/TEAM.xml');
$zipname = __DIR__ . "/WinMSS/WinMSS.zip";
$zip = new ZipArchive;// Load zip librairy
$zip->open($zipname, ZIPARCHIVE::CREATE);
foreach ($files_list as $fileAll)
{
$zip->addFile( __DIR__ . $fileAll); // Adding filename into zip
}
$zip->close();
// echo "<pre>";
// var_dump($zip);
// echo "</pre>";
// die();
//push to download the zip
header('Content-Disposition: attachement; filename='.$zipname);
header('Content-type: application/zip');
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
//Remove zip file is exists in temp path
unlink($zipname);
exit();
}
Lorsque que je ne mets pas le "filesize"
Il me propse de télécharger un fichier zip de 1ko, mais a l'intériur il y a le message d'erreur suivant:
<br />
<b>Warning</b>: readfile(WinMSS.zip): failed to open stream: No such file or directory in <b>/home/tsvstageei/www/winmssmatch.php</b> on line <b>321</b><br />
<br />
<b>Warning</b>: unlink(WinMSS.zip): No such file or directory in <b>/home/tsvstageei/www/winmssmatch.php</b> on line <b>323</b><br />