Toon posts:

[PHP/Mysql] file schrijven en inladen in tabel

Pagina: 1
Acties:

Vraag


  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 18-08-2022

Dorgaldir

Creature of the web

Topicstarter
Hey,

ik wil via een php script een file wegschrijven naar de server en dan via mysql deze laten inladen. Nu zit ik met het issue dat ik vanuit mijn script niet kan schrijven naar een map in de /var/lib/mysql-files omdat de /lib file niet schrijfbaar is.
Als ik de file op een andere locatie zet onder /var/www/ dan kan ik de file wegschrijven, maar als ik dan een "LOAD DATA INFILE" query run dan krijg ik errors, eerst omdat de secure_file_priv nog op de mysql-files map stond, dit heb ik in een .cnf file opgelost, als ik nu "SHOW VARIABLES LIKE "secure_file_priv"" run dan krijg ik wel de nieuwe map te zien, maar als ik dan de query run dan krijg ik alsnog een error
code:
1
#29 - File '/var/www/html/file.TXT' not found (OS errno 13 - Permission denied)


Dit is op een ubuntu webserver die apache en mysql draait.

Hoe kan ik zorgen dat mysql wel die file kan uitlezen? Of hoe kan ik zorgen dat ik vanuit php wel kan wegschrijven naar die originele map?

Just me

Alle reacties


  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Dorgaldir schreef op donderdag 6 januari 2022 @ 23:47:
Hoe kan ik zorgen dat mysql wel die file kan uitlezen?
Zorgen dat mysql rechten heeft om die file te lezen :?
Dorgaldir schreef op donderdag 6 januari 2022 @ 23:47:
Of hoe kan ik zorgen dat ik vanuit php wel kan wegschrijven naar die originele map?
Zorgen dat php rechten heeft om in die map te schrijven :? (Which is a bad idea, by the way - ik zou gewoon /tmp gebruiken ofzo).

Zet de www-user en de mysql user samen in een groep en zet die groep op de file en je bent er lijkt me?

[Voor 8% gewijzigd door RobIII op 07-01-2022 01:17]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 18-08-2022

Dorgaldir

Creature of the web

Topicstarter
RobIII schreef op vrijdag 7 januari 2022 @ 01:14:

Zorgen dat mysql rechten heeft om die file te lezen :?
dat trachte ik dus te doen maar dat lukte mij niet, er staan publiek lees en schrijfrechten op die map dus ik ging er van uit dat dat genoeg was, maar ik blijf de melding krijgen dat die map niet writable is
RobIII schreef op vrijdag 7 januari 2022 @ 01:14:

Zorgen dat php rechten heeft om in die map te schrijven :? (Which is a bad idea, by the way - ik zou gewoon /tmp gebruiken ofzo).
ja daar ging ik al van uit dat het geen goed plan was om /lib writable te maken :p ik vroeg het maar voor het geval er geen andere opties waren
RobIII schreef op vrijdag 7 januari 2022 @ 01:14:
Zet de www-user en de mysql user samen in een groep en zet die groep op de file en je bent er lijkt me?
ik probeer het zo even, alvast bedankt voor de info!

Just me


  • eLScha
  • Registratie: Juli 2005
  • Laatst online: 00:57
Waarom laat je php niet zelf de data naar de database schrijven?

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 18-08-2022

Dorgaldir

Creature of the web

Topicstarter
eLScha schreef op vrijdag 7 januari 2022 @ 09:15:
Waarom laat je php niet zelf de data naar de database schrijven?
We hebben sowieso ook de file nog nodig, dus we moeten hem sowieso wegschrijven.

De reden dat ik dat nog niet geprobeerd heb is omdat het over een file van meer dan 30MB gaat met ruwweg 1.5mil lijnen aan data, ik was niet zeker of ik dit zomaar zonder veel issues door een php script kan pushen.

Just me


  • eLScha
  • Registratie: Juli 2005
  • Laatst online: 00:57
Er is te weinig informatie om te oordelen, maar het voelt alsof je eens naar het grotere plaatje zou moeten kijken. Dit lijkt niet heel efficient.

  • PainkillA
  • Registratie: Augustus 2004
  • Laatst online: 14-01 15:50
Dorgaldir schreef op vrijdag 7 januari 2022 @ 10:05:
[...]


We hebben sowieso ook de file nog nodig, dus we moeten hem sowieso wegschrijven.

De reden dat ik dat nog niet geprobeerd heb is omdat het over een file van meer dan 30MB gaat met ruwweg 1.5mil lijnen aan data, ik was niet zeker of ik dit zomaar zonder veel issues door een php script kan pushen.
er mist nog heel wat data om er iets zinnigs over te kunnen zeggen. ik zou aanraden om in je database geen file contents te gaan opslaan en alleen het pad of filename op te slaan. Php kan prima grote files naar de gebruiker sturen maar dat moet dan wel streaming gebeuren en niet de complete file eerst in memory via php inladen. Files zou ik overigens eerder in een objectstore zoals amazon s3 zetten zodat backup, security etc uit handen wordt genomen en je zo beter kan schalen

  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

PainkillA schreef op vrijdag 7 januari 2022 @ 13:12:
[...]


er mist nog heel wat data om er iets zinnigs over te kunnen zeggen. ik zou aanraden om in je database geen file contents te gaan opslaan en alleen het pad of filename op te slaan. Php kan prima grote files naar de gebruiker sturen maar dat moet dan wel streaming gebeuren en niet de complete file eerst in memory via php inladen. Files zou ik overigens eerder in een objectstore zoals amazon s3 zetten zodat backup, security etc uit handen wordt genomen en je zo beter kan schalen
TS probeert data uit een CSV te importeren, niet de CSV zélf (of een ander bestand) als blob/"bestand" in de DB te zetten ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:56
Dorgaldir schreef op vrijdag 7 januari 2022 @ 10:05:
[...]


We hebben sowieso ook de file nog nodig, dus we moeten hem sowieso wegschrijven.

De reden dat ik dat nog niet geprobeerd heb is omdat het over een file van meer dan 30MB gaat met ruwweg 1.5mil lijnen aan data, ik was niet zeker of ik dit zomaar zonder veel issues door een php script kan pushen.
Ik zou om diverse redenen (security, complexiteit) LOAD DATA ten alle tijde vermijden, tenzij het om een eenmalige import gaat. Misschien dat de LOCAL modifier nog wat behulpzaam kan zijn, het lijkt alsof je dan in geval van een wat logischer directory kan importeren.

Maar goed, ik zou dus altijd eerst proberen een gewone import via een script proberen, in jouw geval dus PHP. Dat heeft veel voordelen en is veel flexibeler. Je kan bv retryen, pauzeren etc. Maar alles staat of valt met je vereisten, bv hoe vaak moet dit gebeuren, wordt het door gebruikers geinitieerd etc etc.

PV Output


  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 18-08-2022

Dorgaldir

Creature of the web

Topicstarter
Kalentum schreef op vrijdag 7 januari 2022 @ 13:26:
[...]


Ik zou om diverse redenen (security, complexiteit) LOAD DATA ten alle tijde vermijden, tenzij het om een eenmalige import gaat. Misschien dat de LOCAL modifier nog wat behulpzaam kan zijn, het lijkt alsof je dan in geval van een wat logischer directory kan importeren.

Maar goed, ik zou dus altijd eerst proberen een gewone import via een script proberen, in jouw geval dus PHP. Dat heeft veel voordelen en is veel flexibeler. Je kan bv retryen, pauzeren etc. Maar alles staat of valt met je vereisten, bv hoe vaak moet dit gebeuren, wordt het door gebruikers geinitieerd etc etc.
Het is een actie de elke dag opnieuw uitevoerd dient te worden rond middernacht.
Ik heb in het verleden al issues gehad met grote files via php te importeren in mysql, vandaar dat ik LOAD DATA ben beginnen gebruiken, die deed het toen wel...

Just me


  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:56
Dorgaldir schreef op vrijdag 7 januari 2022 @ 13:39:
[...]


Het is een actie de elke dag opnieuw uitevoerd dient te worden rond middernacht.
Ik heb in het verleden al issues gehad met grote files via php te importeren in mysql, vandaar dat ik LOAD DATA ben beginnen gebruiken, die deed het toen wel...
Wat voor issue had je dan?

PV Output


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
@Dorgaldir heeft vast "out of memory" of "timeout".

Is wel raar want je kan prima bestanden van 1GB verwerken (snel is anders).

Maak je niet druk, dat doet de compressor maar


  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:56
DJMaze schreef op vrijdag 7 januari 2022 @ 20:29:
[...]

@Dorgaldir heeft vast "out of memory" of "timeout".

Is wel raar want je kan prima bestanden van 1GB verwerken (snel is anders).
De bestanden zijn blijkbaar 30 MB dus tja..., Ik ben benieuwd wat dan het probleem is.

[Voor 6% gewijzigd door Kalentum op 07-01-2022 20:52]

PV Output

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee