Het bestand leverancier-voorraad.xml werd altijd keurig aangemaakt en kan van daaraf met andere cron verwerkt worden.
Nu merkte ik echter dat de voorraad niet goed bijgewerkt werd de afgelopen tijd. dat ik ging kijken bleek dat de laatste versie van leverancier-voorraad.xml 2 weken oud was.
Dus even de rapportage van cron aangezet en krijg ineens de volgende rapportage bij uitvoeren van bovenstaande script:
Cronjob wordt dus goed uitgevoerd, bestand wordt gedownload maar hij slaat het ineens op naar Saving to: “/dev/null”
Volgens mij staat er toch echt een andere opslag locatie in het bestand opgegeven.
Iemand voor deze leek enig idee waarom hij ineens niet meer naar opgegeven locatie opslaat maar naar “/dev/null”
[size=xsmall]Toevoeging op 21/06/2018 07:28:49:[/size]
Ik heb hetzelfde script nog even op andere domeinnaam getest en dan wordt bestand gewoon opgeslagen op de daar opgegeven locatie.
Locatie waar opgeslagen moet worden bestaat ook gewoon (staat ook nog het oude eerder via script gedownloade bestand). en rechten van de map waarbinnen opgeslagen moet worden staat op 0755
En dan vind je het gek dat alles in /dev/null wordt opgeslagen? :-)
(om een half-open deur nog iets verder open te trappen: -O is de korte variant van --output-document)
Cronjob wordt dus goed uitgevoerd, bestand wordt gedownload maar hij slaat het ineens op naar Saving to: “/dev/null”
Volgens mij staat er toch echt een andere opslag locatie in het bestand opgegeven.
Je zit helemaal verkeerd te denken.
wget roept de opgegeven url aan en schrijft de output (dus datgene wat je in je browser ziet) naar /dev/null. Wat er in /dev/null terechtkomt, is dus niet de voorraad.xml, maar alle uitvoer van je php-script. Misschien zit daar ook wel een foutmelding in die je nu over het hoofd ziet.
Je zegt in je openingspost dat de rechten van de directory goed zijn en dat het eerder gedownloade bestand daar nog staat. Hoe zit het met de rechten van dat bestand? Kan het zijn dat die (ineens) zo staan dan de fopen() daardoor het bestand niet meer kan openen? Wat gebeurt er als je het bestand hernoemt of weggooit?
(edit)
Terzijde: als je wget gebruikt in cronjobs, kun je het beste ook de parameter -q meegeven. Hij geeft dan geen output naar het scherm (afgezien van eventuele foutmeldingen), zodat je de cron-rapportage niet hoeft te onderdrukken (wat tot gevolg heeft dat je de foutmeldingen mist).
Ik ben een complete amateur hierin en heb gewoon script gebruikt en cronjobs gemaakt zoals mij verteld is.
Maar met /usr/bin/wget -O /dev/null "http://www.domeinnaam1.com/feeds/merk-voorraad.php" heb ik heel lang dus egwoon dat script uitgevoerd en werd het bestand dat in het script aangegeven stond keurig opgeslagen op de locatie zoals in het bestand staat aangegeven. Maar vannaf datum x werkt dat dus ineens niet meer voor domeinnaam 1.
Op domeinnaam 2 draait exact dezelfde opdracht voor exact hetzelfde script (enkel de opslag locatie is anders. en voor domeinnaam 2 werkt het nog wel.
Maar zou dus /usr/bin/wget "http://www.domeinnaam1.com/feeds/merk-voorraad.php" moeten gebruiken (de locatie waar de file die in "merk-voorraad.php genoemd wordt die hij moet downloaden staat ook in het bestand "merk-voorraad.php"
[size=xsmall]Toevoeging op 21/06/2018 12:21:44:[/size]
waarom werkt dus op ene domeinnaam het deel $destination = "/home/map/domains/domain.com/public_html/pub/media/importexport/leverancier-voorraad.xml"; uit het script wel en op andere domeinnaam niet meer?
Maar zou dus /usr/bin/wget "http://www.domeinnaam1.com/feeds/merk-voorraad.php" moeten gebruiken (de locatie waar de file die in "merk-voorraad.php genoemd wordt die hij moet downloaden staat ook in het bestand "merk-voorraad.php"
Nee. Dat heeft namelijk tot gevolg dat je óf een foutmelding van wget krijgt dat hij de output niet kan wegschrijven omdat hij geen rechten heeft, óf dat er ergens op het systeem een bestand merk-voorraad.php komt te staan met daarin de uitvoer van het script.
De fout zit ergens anders, we moeten alleen nog een zien te achterhalen waar. Staat er nog iets nuttigs in de errorlog van PHP/webserver?
Nu zie ik wat je doet, je roept in cron een PHP script aan die dan daadwerkelijk de cron uitvoert. Waarom die indirectie? Nu zit je dus naar zaken te kijken (die /dev/null) die niet relevant zijn. Roep het cron script eens rechtstreeks aan in de browser en kijk wat er aan foutmeldingen komt. En kijk ook eens in je error logs.
maar op home/map/domains/domeinnaam-voor-opslaan.com/public_html/pub/media/importexport/files/merk-voorraad.xml is niks opgeslagen
[size=xsmall]Toevoeging op 21/06/2018 12:32:37:[/size]
Ben van Velzen op 21/06/2018 12:29:09
Nu zie ik wat je doet, je roept in cron een PHP script aan die dan daadwerkelijk de cron uitvoert. Waarom die indirectie? Nu zit je dus naar zaken te kijken (die /dev/null) die niet relevant zijn. Roep het cron script eens rechtstreeks aan in de browser en kijk wat er aan foutmeldingen komt. En kijk ook eens in je error logs.
Ik roep met een cron een php script aan. in dat php script staat dus welke bestand vanaf welke domeinnaam hij moet downloaden en naar welke domeinnaam en map en onder welke naam hij die moet opslaan.
Dat gebeurd ook zo omdat voor bepaalde leveranciers er in dat php script ook een stukje code staat die gebruikt wordt om bij die leverancier in te loggen (die productfeeds staan achter een wachtwoord).
[size=xsmall]Toevoeging op 21/06/2018 12:33:28:[/size]
Wat krijg je te zien als je "http://www.domeinnaam.com/feeds/merk-voorraad.php" in je browser aanroept? Wellicht staat daar nog iets van een foutmelding, maar normaal gesproken krijg je die nooit te zien omdat die naar /dev/null wordt gestuurd.
herstel... na laatste aanpassing is er wel een error:
[Thu Jun 21 09:59:06.827204 2018] [lsapi:notice] [pid 739201:tid 140574151567104] [client 185.104.28.87:42324] [host www.domein.com] Backend log: PHP Warning: fopen(/home/map/domains/domein.com/public_html/pub/media/importexport/files/merk-voorraad.xml): failed to open stream: No such file or directory in /home/map/domains/domein.com/public_html/feeds/merk-voorraad.php on line 11\n
en
[Thu Jun 21 09:59:06.827257 2018] [lsapi:notice] [pid 739201:tid 140574151567104] [client 185.104.28.87:42324] [host www.domein.com] Backend log: PHP Warning: fputs() expects parameter 1 to be resource, boolean given in /home/map/domains/domein.com/public_html/feeds/merk-voorraad.php on line 12\n
[size=xsmall]Toevoeging op 21/06/2018 12:38:03:[/size]
Willem vp op 21/06/2018 12:34:31
Wat krijg je te zien als je "http://www.domeinnaam.com/feeds/merk-voorraad.php" in je browser aanroept? Wellicht staat daar nog iets van een foutmelding, maar normaal gesproken krijg je die nooit te zien omdat die naar /dev/null wordt gestuurd.