Portál AbcLinuxu, 4. května 2025 12:36
Zdravím,
Před pár dny jsem migroval ostrou verzi websitu postaveném na Drupalu na upravenou "beta" verzi. Migrace proběhla až na jeden detail v pohodě, zjistil jsem totiž, že ZIP soubory uploadované jako privátní se stáhnou poškozené. Ark je zobrazí jako prázdné a unzip při pokusu o rozbalení vypíše "End-of-central-directory signature not found". Pokud nahraju nějaký ZIP přes FTP do veřejně přístupné složky na serveru a pokusím se ho stáhnout pomocí "adresa.cz/nekde/soubor.zip", stáhne se v pořádku, v konfiguraci Apache teey předpokládám problém nebude; problémů jsem si všiml jen u privátních souborů přenášených Drupalem. Website běží ve VPSce na openSuSE 12.1, Apache 2.2.21-3.6.1, Drupal 6.25, výčet modulů by byl dlouhý, pro urychlení ale používám modul Boost, gzip komprese v něm je ale vypnutá, od toho mám v Apache mod_deflate. Jakékoliv jiné soubory (RAR, DOC, PDF, ...) se stáhnou v pohodě.
Po pár hodinách googlení a zkoušení mi fakt došly nápady, hrál jsem si s modulem Boost , .htaccess i nastavením komprese v Apache (ZIP by komprimovat neměl), netušíte někdo, co za tohle může? Díky.
Zkoušel jsem zachytit komunikaci při stahování a zjistil jsem, že pokud se soubor stahuje ze sites/default/files (výchozí veřejná složka), je MIME ZIP souboru application/octet-stream, pokud se však stahuje ze sites/default/files/private, MIME se změní na application/zip a posledních pár bytů v souboru nesedí. V prvním případě se soubor stáhne dobře, v případě druhém dojde k výše zmíněným problémům.
Pokud nahraju soubor natvrdo přes FTP, stahuje se též jako application/zip a je v pořádku, něco shnilého bude tedy nejspíš v Drupalím modulu Private uploads.
Pochybuju, že se z toho dá vyčíst něco navíc, nicméně pro jistotu přikládám logy z Wiresharku.
Download OK
Poškozený soubor
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.