Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Cronjob werkt vaag...

Pagina: 1
Acties:

  • The Milkman
  • Registratie: Maart 2004
  • Laatst online: 29-09 21:41

The Milkman

█████░░░░░ 50%

Topicstarter
Goedendag,

ik heb voor een siteje de volgende cronjob aangemaakt:

*/2 * * * * /usr/local/bin/php /home/deb3895/domains/bertlog.com/public_html/mariska/pagina/resetc.php

Om te testen staat hij op om de 2 minuten.
resetc.php zorgt ervoor dat er een tekstbestandje op 0 word gezet. Als dit succesvol gedaan is, is deze melding zichtbaar: De opdracht is voltooid.

Als ik zelf het script uitvoer, word het txt bestandje netjes op nul gezet. Maar als de cron-dinges dat doet, niet, terwijl ik per mail wel de uitvoer krijg.

Kan dit te maken hebben met rechten van het bestand? Ik heb het textbestandje al chmod 777 gegeven, maar dat mocht helaas niet baten.

Bedankt.

𓆑 𓆑 𓆑 𓆑 𓆑 𓆑


  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Als je per mail de melding "De opdracht is voltooid." krijgt terwijl het bestand niet veranderd is, dan klopt er duidelijk iets niet aan je script (dus laat eens wat code zien).

Het zou aan de rechten kunnen liggen, is er een verschil tussen jouw user en die waaronder de cronjob draait? Alleen 777 op de file is misschien niet genoeg als de rechten op de bovenliggende directories erg strikt zijn. Ook is de environment van de cronjob wellicht anders dan die van je interactive shell, wat een probleem zou kunnen zijn, maar daar is niets zinnigs over te zeggen zonder wat code te zien.

"He took a duck in the face at two hundred and fifty knots."


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Als jij alleen een mail stuurt bij succes en het schrijven faalt en je krijgt toch mail, klopt er een check in je code niet. :P Als je wel alle checks goed doet, had je tijdens de foutafhandeling al ontdekt wat er fout gaat, dus kom maar op met de relevante code. ;)

{signature}


  • The Milkman
  • Registratie: Maart 2004
  • Laatst online: 29-09 21:41

The Milkman

█████░░░░░ 50%

Topicstarter
Ok, ik ben er inmiddels uit, en het is gelukt... Ik kan het alleen niet verklaren wat er nu gebeurt.

Dit is het script:

code:
1
2
3
4
5
6
7
8
9
10
11
<?php
$myFile = "counter.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "0";
$writefile = fwrite($fh, $stringData);

if ($writefile) {
echo "Opdracht uitgevoerd.";
}
fclose($fh);
?>


Dit resulteerde dat hij een counter.txt aanmaakte in de root!!!

Nu ik het pad heb aangepast werkt het wel:
$myFile = "/home/deb3895/domains/bertlog.com/public_html/mariska/pagina/counter.txt";

Maar hoe kan het nu dat hij hem in de root wegschreef? Hij leest hem toch gewoon uit het mapje?

[ Voor 1% gewijzigd door The Milkman op 10-10-2007 15:32 . Reden: typo ]

𓆑 𓆑 𓆑 𓆑 𓆑 𓆑


Verwijderd

De cronjob werkt niet vanuit de normale webdirectory.
Schijnbaar start de cronjob als root, dus wordt het bestand ook in de root opgeslagen.

Je kan door

PHP:
1
chdir('/usr/local/bin/php /home/deb3895/domains/bertlog.com/public_html/mariska/pagina');


eerst de huidige directory veranderen en dan het bestand counter.txt opslaan.

  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
The Milkman schreef op woensdag 10 oktober 2007 @ 15:31:
Dit resulteerde dat hij een counter.txt aanmaakte in de root!!!

Nu ik het pad heb aangepast werkt het wel:
$myFile = "/home/deb3895/domains/bertlog.com/public_html/mariska/pagina/counter.txt";

Maar hoe kan het nu dat hij hem in de root wegschreef? Hij leest hem toch gewoon uit het mapje?
Als je een niet-absolute filename gebruikt, wordt die gelezen/geschreven in de huide working directory. Je cron start scripts blijkbaar vanuit de root directory.
edit:
Langzaam!

"He took a duck in the face at two hundred and fifty knots."


Verwijderd

_Squatt_ schreef op woensdag 10 oktober 2007 @ 15:43:
[...]

Als je een niet-absolute filename gebruikt, wordt die gelezen/geschreven in de huide working directory. Je cron start scripts blijkbaar vanuit de root directory.
edit:
Langzaam!
Wbt cronscripts icm php; gebruik geen relatieve paden. Pleur desnoods een define("BASE", "/ik/moet/hier/staan/") bovenaan je script en plak BASE overal voor.
Daarnaast, let op dat je php -q gebruikt, anders krijg je er wellicht ook nog header meuk bij.
En verder is het misschien handig om in je cron aan het einde van die regel ' 1>/hier/staat/log 2>&1' neer te zetten, mocht je script dan een paar dagen niet gewerkt hebben, dan heb je misschien nog wat bruikbare output in de log.

  • The Milkman
  • Registratie: Maart 2004
  • Laatst online: 29-09 21:41

The Milkman

█████░░░░░ 50%

Topicstarter
Oke, goed om te weten. Weer wijzer geworden vandaag.
Bedankt allen!

𓆑 𓆑 𓆑 𓆑 𓆑 𓆑

Pagina: 1