PHPscript uitvoeren in CronJob
Jaren geleden heb ik eens uitgezocht hoe je automatisch een script kunt laten uitvoeren op uur en tijd. Ik laat dan via zo'n cronjob (putty) een php script verwerken. Dat heeft altijd gewerkt maar nu niet meer. Het enigste wat er veranderd is, is een ssl certificaat. Maar ik denk niet dat hem dat gaat worden.
Als ik het script met de hand uitvoer dan komen er geen foutmeldingen en hij doet zijn werk prima behalve 's-ochtends vroeg om 0500 dan gaat het niet automatisch via een cronjob. Navraag bij de provider.... wij leveren géén ondersteuning....
Misschien weet een van jullie raad?
Dus eigenlijk vraag ik wat de mogelijkheden zijn dat een script niet via cronjob loopt.
Dit heb ik al jaren in de cron staan:
00 05 * * * php /lang_pad/scriptje.php
Alvast bedankt.
Wim
Fdus ipv php /usr/bin/php, of waar php op jouw server staat.
dat achterhaal je met
Toevoeging op 29/01/2015 19:04:42:
Cert staat hier los van, tenzij jouw script vervolgens weer en website benadert
Het kan zijn dat deze om onbepaalde redenen een error uitspuugt.
Als je geen toegang tot de mail hebt, dan kan je ook de output van de cron loggen in een .txt fike:
Code (php)
1
00 05 * * * /usr/bin/php /home/USERNAME/DOMEIN.nl/lang_pad/scriptje.php >> /home/USERNAME/DOMEIN.nl/log.txt 2>&1
Het volledige pad naar je PHP-script moet je zelf even achterhalen.
which php
gaf het zelfde resultaat als wat Ivo opgaf.
Verder heb ik het pad naar php volgens jullie instructies aangepast en een log eraan geplakt. Morgenvroeg om 0500 moet dat dus goedgaan!!
Kun je mij zeggen hoe ik naar die root-mailadres ga? Als ik ls -ahl doe dan staat er wel root maar ik heb geen permissies daarvoor.
Thanks so far!
Gebruik je DirectAdmin op de server, dan kan je vaak met je username en je password inloggen in de webmail.
Het heeft niet gwerkt maar ik heb nu wél een log met een heleboel fouten. Het
gaat vooral over paden die onvindbaar zijn. Mag ik hier de paden met jullie delen?
Mijn hoofdpad begint met een / klopt dat?
Verder zijn er inclusions naar ../menu/contact/inlude.php enzo.
Ook deze kan ie niet vinden. Maar zoals ik al zei: met de hand wél.
Hoe adresseer je paden in een sript dat door een cronjob aangeroepen word?
Please!?
Gewijzigd op 30/01/2015 16:59:37 door Wim van de Wetering
Dus alle path's moeten vanuit de root van de server zijn en niet vanuit de webroot.
include ("../menu/even/tage.php");
maar deze?
include("/home/vhosting/h/vhostNUMMER/domains/mijndomein.nl/htdocs/www/menu/even/tage.php");
of toch niet beginnen met een backslash?
include("home/vhosting/h/vhostNUMMER/domains/mijndomein.nl/htdocs/www/menu/even/tage.php");
Laat maar weten en bijvoorbaat ontzettend bedankt dat je mij vooruit wilt helpen.
include("/home/vhosting/h/vhostNUMMER/domains/mijndomein.nl/htdocs/www/menu/even/tage.php");
Ik ga het veranderen en morgenvroeg 0500 weet ik meer. Tot dan!
Je kan ook de tijd in de cronjob tijdelijk veranderen dan weet je het direct.
WOW!
Ik ben hier echt te lang mee bezig geweest.
Fijn dat jullie mij weer op het rechte pad hebben gebracht.
Morgenvroeg toch nog even afwachten maar de melding van 1845u
was er in "vol ornaat"
G O E I E !!
Toevoeging op 31/01/2015 05:27:15:
En om 0500... Mooi wark!
Groet,
Wim
Dan werkt dit niet:
Uit compatibiliteitsoverwegingen kun je beter altijd je PHP-tags uitschrijven, omdat dat altijd werkt, ongeacht de waarde van de instelling short_open_tag.
Of er staat mogelijk verouderde code in het script dat je aanroept.
Toevoeging op 03/05/2015 20:18:54:
Ik heb, eventuele foutmeldingen dus afgevangen in een log. Dat heeft altijd gewerkt maar nu komt er in die log alleen het komplete script te staan zonder maar één error of uitleg. De migratie naar 5.5 heeft mysql geheel deprecated. Ik heb het nu naar MySqli geschreven en denk dat dat de fout is geweest. Maar dan blijft het toch een vreemde log. Morgenvroeg weet ik of ik op het juiste pad zit.
OwJa... ik heb er