gunzip werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel van Seggelen

Daniel van Seggelen

25/04/2019 05:55:15
Quote Anchor link
Ik download via een affiliate HTTPS request een gz feed.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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?
 
PHP hulp

PHP hulp

17/08/2019 13:43:59
 
- Ariën -
Beheerder

- Ariën -

25/04/2019 08:53:47
Quote Anchor link
Hoe werkt dit in de CLI? Of heb je geen mogelijkheid voor?
 
Daniel van Seggelen

Daniel van Seggelen

25/04/2019 09:29:28
Quote Anchor link
In de cli heb ik toegang tot en werkt exact hetzelfde
 
Ivo P

Ivo P

25/04/2019 09:51:22
Quote Anchor link
kan "system" gunzip wel vinden? Wat als je daar het hele path naar toe opgeeft:

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.
 
Daniel van Seggelen

Daniel van Seggelen

25/04/2019 10:34:30
Quote Anchor link
system werkt wel zeker zoals je al zei hij maakt het bestand namelijk wel aan met gunzip


Toevoeging op 25/04/2019 10:52:15:

Even een update:

ALs ik het volgende doe

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
gunzip -f /home/admin/domains/test.nl/private_html/shopconnector/feeds/feed55import.gz


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)
PHP script in nieuw venster Selecteer het PHP script
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
exec('zcat /home/admin/domains/test.nl/private_html/shopconnector/feeds/feed55import.gz | sudo tee /home/admin/domains/test.nl/private_html/shopconnector/feeds/feed55import.csv >/dev/null');
 
Ivo P

Ivo P

25/04/2019 11:40:48
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

25/04/2019 13:15:42
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
system('which gzip');
?>

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
 
Ivo P

Ivo P

25/04/2019 13:40:10
Quote Anchor link
als ik de link die ik boven gaf nog eens lees:

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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.