Zip van url downloaden naar specifieke map en upzippen.
Ik wil graag een zip bestand welke beschikbaar is via een URL naar mijn website halen, en deze uitpakken.
Nu lukt dit wel als ik de zip aanroep via de lokale website, maar niet via een url. Ik krijg dan namelijk een corrupte zip terug (met een andere grootte dan verwacht).
Hierbij het stukje code welke gebruikt wordt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
// juiste update bestand selecteren
$file = 'http://www.website.nl/update.zip';
//$file = 'update.zip';
// bestemming selecteren
$newfile = $_SERVER['DOCUMENT_ROOT'] . '/test/update.zip';
// kopieren + fallback
if ( copy($file, $newfile) ) {
echo "Bestand is succesvol gedownload en lokaal verwerkt.";
}else{
echo "Bestand downloaden en uitpakken mistlukt.";
}
$file = 'http://www.website.nl/update.zip';
//$file = 'update.zip';
// bestemming selecteren
$newfile = $_SERVER['DOCUMENT_ROOT'] . '/test/update.zip';
// kopieren + fallback
if ( copy($file, $newfile) ) {
echo "Bestand is succesvol gedownload en lokaal verwerkt.";
}else{
echo "Bestand downloaden en uitpakken mistlukt.";
}
Ik heb voor het gemak alle rechten op 777 gezet, maar dit geeft geen resultaat.
Het ziet er naar uit dat de server weigert om copy() uit te voeren op een source-bestand op een andere server.
Update:
Output van de zip is trouwens altijd 5.823 bytes. Heb verschillende zip-bestanden uitgeprobeerd, maar resulteert altijd in dit aantal bytes...
Gewijzigd op 24/09/2013 16:21:24 door Bjorn Hoogeveen
Lees het zipbestand eens met een gewone texteditor
Wat voor error krijg je van copy?
Ik heb het geheel op een andere site getest, waarop het prima werkt. Probleem is dus specifiek voor één site.
Op de probleem-site lijkt er iets raars aan de hand te zijn: als je direct de url volgt naar de update.zip krijg je een foutpagina (pagina bestaat niet). Echter bestaat de zip wel gewoon. Heb het ook met een xml-bestand getest, en hierbij geld hetzelfde...
Probeer het eens met file_get_contents() en/of ander via cURL().
Voor gedesinteresseerd een stukje van de .htaccess file (laatste regel is bijgevoegd):
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
RewriteCond %{REQUEST_URI} !.png$ [NC]
RewriteCond %{REQUEST_URI} !.js$ [NC]
RewriteCond %{REQUEST_URI} !.php$ [NC]
RewriteCond %{REQUEST_URI} !inc/functions.php$ [NC]
RewriteCond %{REQUEST_URI} !.css$ [NC]
RewriteCond %{REQUEST_URI} !.jpg$ [NC]
RewriteCond %{REQUEST_URI} !.gif$ [NC]
RewriteCond %{REQUEST_URI} !.zip$ [NC]
RewriteCond %{REQUEST_URI} !.js$ [NC]
RewriteCond %{REQUEST_URI} !.php$ [NC]
RewriteCond %{REQUEST_URI} !inc/functions.php$ [NC]
RewriteCond %{REQUEST_URI} !.css$ [NC]
RewriteCond %{REQUEST_URI} !.jpg$ [NC]
RewriteCond %{REQUEST_URI} !.gif$ [NC]
RewriteCond %{REQUEST_URI} !.zip$ [NC]