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:
// 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.";
}
Ik heb voor het gemak alle rechten op 777 gezet, maar dit geeft geen resultaat.
Dat is dus geen probleem van unzippen, maar van rechten.
Het ziet er naar uit dat de server weigert om copy() uit te voeren op een source-bestand op een andere server.
Daar lijkt het inderdaad wel op ja. Misschien dat iemand hier een oplossing voor weet? Ik zie namelijk wel soortgelijke voorbeelden op het web, waarbij het wel werkt. Echter werkt het bij mij geen van alle, en krijg ik een corrupte zip terug. De source is uiteraard geen corrupte zip.
Update:
Output van de zip is trouwens altijd 5.823 bytes. Heb verschillende zip-bestanden uitgeprobeerd, maar resulteert altijd in dit aantal bytes...
@Jan R: Nu gebeurt er iets interessants: ik krijg de html-weergave van de website te zien waarop de zip is geplaatst. Buiten de html geeft die een foutpagina (pagina bestaat niet). Originele zip heeft allemaal mooie rare tekentjes.
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...
Gelukt! In de .htaccess stond een lijst gedetineerd met toestaande extensies die direct benaderd mogen worden. Zip stond hier niet bij, waardoor er doorgestuurd werd naar de niet-bestaande pagina.
Voor gedesinteresseerd een stukje van de .htaccess file (laatste regel is bijgevoegd):