Je geplande taak (cronjob) wordt niet uitgevoerd of doet niets? Meestal een pad, een andere PHP-versie, ontbrekende omgevingsvariabelen of uitvoer die nergens heen gaat. Zo spoor je het op.
Cron voert opdrachten uit op vaste tijden, maar in een kale omgeving: een beperkte PATH, een andere werkmap en zonder je eigen shell-instellingen. Een opdracht die in je terminal werkt, kan in cron daardoor stilletjes falen.
Omdat de uitvoer van cron standaard naar een mailbox gaat die niemand leest (of nergens), merk je dat vaak pas als een taak dagen niets heeft gedaan.
Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.
Bekijk de crontab en controleer de vijf tijdvelden (minuut, uur, dag, maand, weekdag). Cron gebruikt de tijdzone van de server.
crontab -l
# voorbeeld: elke dag om 03:15
15 3 * * * /usr/bin/php /var/www/site/taak.phpSchrijf het volledige pad naar php en naar het script. Welke php cron gebruikt, zie je met which.
which php
/usr/bin/php -vLaat elke run zijn uitvoer en fouten in een bestand zetten, zodat je kunt zien wat er gebeurt.
15 3 * * * /usr/bin/php /var/www/site/taak.php >> /var/log/taak.log 2>&1Het systeemlog laat zien of cron de opdracht uitvoerde.
grep CRON /var/log/syslog | tail -n 20
# of: journalctl -u cron --since todayGebruikt het script relatieve paden, zet dan een cd in de regel of gebruik __DIR__ in het script. Draait de cron als een andere gebruiker dan de website, dan kunnen bestandsrechten verschillen.
WP-Cron draait alleen als er een bezoeker komt. Op rustige sites lopen taken daardoor achter. Zet een echte cronjob en schakel de bezoek-gestuurde variant uit.
// wp-config.php
define( 'DISABLE_WP_CRON', true );
# crontab, elke 5 minuten
*/5 * * * * cd /var/www/site && /usr/bin/php wp-cron.php > /dev/null 2>&1Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.
Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.
Dan verschilt de omgeving: PATH, PHP-versie, werkmap of gebruiker. Log de uitvoer en vergelijk.
In crontab betekent % een nieuwe regel; schrijf hem als \%. Een veelvoorkomende oorzaak bij date-opdrachten.
Ja, als een run langer duurt dan het interval. Gebruik flock om dat te voorkomen: flock -n /tmp/taak.lock /usr/bin/php taak.php.
Hulp nodig van een mens? Website-onderhoud · WordPress-support · Hosting en onderhoud · Alle oplossingen