gunzip werkt niet
Dat gaat prima en staat netjes op de site en geef het bestand 777 rechten wat ook goed gaat.
Als ik hem vervolgens wel uitpakken, dan komen de problemen:
1)
Code (php)
1
2
2
system('gunzip -f /home/admin/domains/test.nl/private_html/shopconnector/feeds/feed55import.gz > /home/admin/domains/test.nl/private_html/shopconnector/feeds/feed55import.csv');
feed55import.csv word aangemaakt maar is leeg en krijgt initeel 0664 rechten
De hele feeds DIR staat op 777.
Als ik feed55import.csv met fopen eerst aanmaak met 777 rechten en hem dan wil uitpakken blijf hij 0.
Het bestand als ik hem in windows gewoon open kan ik hem openen en het is een csv bestand.
Wat kan ik nu doen om dit probleem op te lossen?
Hoe werkt dit in de CLI? Of heb je geen mogelijkheid voor?
In de cli heb ik toegang tot en werkt exact hetzelfde
iets als /usr/bin/gunzip
hoewel ik zou denken dat in het geval hij hem niet vindt, ook het resulterende bestand niet aangemaakt zou worden.
Toevoeging op 25/04/2019 09:53:15:
PS: 777 is natuurlijk wat veel voor een zip-bestand. R (4) zou genoeg moeten zijn om hem te kunnen lezen. Moet hij ook verwijderd kunnen worden, dan is W, 6, nodig. Maar úitvoerbaar is niet nodig.
Toevoeging op 25/04/2019 10:52:15:
Even een update:
ALs ik het volgende doe
Dan pakt hij het volgende bestand uit zonder extentie: feed55import
Dan moet ik er met rename het bestand wijzigen naar: feed55import.csv . Het is namelijk een csv bestand.
Maar waarom lukt dit niet om het direct naar csv te exporteren met
Code (php)
1
system('gunzip -f /home/admin/domains/test.nl/private_html/shopconnector/feeds/feed55import.gz > /home/admin/domains/test.nl/private_html/shopconnector/feeds/feed55import.csv');
Toevoeging op 25/04/2019 11:08:48:
WEer een update.
als ik in CLE gunzip -c gebruik doet hij dit wel goed. -f niet.
Maar via het php bestand hetzelfde probleem. Wat is hier nu de oplossing voor?
Toevoeging op 25/04/2019 11:17:50:
UPDATE
als ik dit doe werkt het ook niet, hetzelfde resultaat snap er niks meer van:
https://www.lifewire.com/example-uses-of-the-gunzip-command-4081346
Gemakkelijkst is misschien om te bedenken dat er meer dan 1 file in een zip bestand kan zitten.
Je kunt dus ook niet de "output" van gunzip ergens heen sturen.
De output van gunzip zou hooguit iets moeten bevatten als "ik heb 2 files extracted" of iets dergelijks.
gunzip maakt zelf de files aan.
Afhankelijk van de opgegeven switches kan hij de oorspronkelijke file.gz weggooien of behouden.
De output files komen in de betreffende directory of zelfs in een directory een level dieper.
Ik gebruik doorgaans tar, maar dat doet iets als:
tar xvfz php-7.3.0.tar.gz
maakt een map aan php-7.3.0 en daarin staan alle files en mappen van het archief.
Gemakkelijkst is misschien om te bedenken dat er meer dan 1 file in een zip bestand kan zitten.
Je kunt dus ook niet de "output" van gunzip ergens heen sturen.
De output van gunzip zou hooguit iets moeten bevatten als "ik heb 2 files extracted" of iets dergelijks.
gunzip maakt zelf de files aan.
Afhankelijk van de opgegeven switches kan hij de oorspronkelijke file.gz weggooien of behouden.
De output files komen in de betreffende directory of zelfs in een directory een level dieper.
Ik gebruik doorgaans tar, maar dat doet iets als:
tar xvfz php-7.3.0.tar.gz
maakt een map aan php-7.3.0 en daarin staan alle files en mappen van het archief.
Daniel van Seggelen op 25/04/2019 10:34:30:
system werkt wel zeker zoals je al zei hij maakt het bestand namelijk wel aan met gunzip
Komt dat niet omdat je de output redirect met > naar een output-bestand? Mogelijk wordt er al meteen een bestand aangemaakt om deze plek te reserveren. Al heb ik weinig verstand van linux/unix komt mij dit over als logisch.
Ik denk dat @Ariën en @Ivo ook een punt hebben. Op het moment dat je dit soort commando's via PHP gaat uitvoeren werkt alles meestal net iets anders dan wanneer je dit rechtstreeks via de prompt doet.
Probeer anders eens het volgende:
Oftewel: waar bevindt gzip zich indien je deze via een shell commando probeert uit te voeren.
Dit levert vervolgens bijvoorbeeld: /bin/gzip
Gebruik dit volledige pad in de aanroep van gzip in het shellcommando in plaats van simpelweg "gzip".
Gewijzigd op 25/04/2019 13:18:56 door Thomas van den Heuvel
kennelijk werkt gzip met 1 bestand dat gecomprimeerd wordt. Daarbij wordt blijkbaar de filename niet onthouden.
gunzip file.gz wordt dus uitgepakt naar "file"
gunzip file.csv.gz zal dan mi. worden tot "file.csv"
Alternatief kun je "file" renamen naar "file.csv" na het uitpakken.
--
dan is er nog de switch -c
gunzip -c file.gz
dat zet de uitgepakte inhoud van file op het scherm. En die output kun je middels > doorschuiven naar een bestand.
gunzip -c file.gz > file.csv
zou dan de inhoud in file.csv moeten plaatsen.