webForumDet fria alternativet

Cronjob körs inte

Linux & BSD

13 svar · 1 078 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej,

Har problem med ett cronjob som inte verkar köras. Jag tror att jag tänkt rätt här, scriptet ska köra varje dag, tre gånger i timman mellan 06.00 och 11.00:

*/20 6-11 * * * /usr/local/bin/php /var/www/filnamn.php

Jag kan köra scriptet i browsern, så jag vet att det fungerar. En sak har jag tänkt på.. har en htaccess fil där jag endast tillåter vissa IP'n att köra filen, men det bör väl inte påverka crontab?

Medlem sedan sep. 20005 700 inlägg
#2

MickeA.com skrev:

En sak har jag tänkt på.. har en htaccess fil där jag endast tillåter vissa IP'n att köra filen, men det bör väl inte påverka crontab?

Nej, eftersom .htaccess tolkas av Apache, som inte är inblandad i cronjobbet.

Medlem sedan juni 20014 421 inlägg
#3

Syntaxen ser korrekt ut. Vilken användare körs skriptet som? Vad har den för rättigheter på katalogen?

om du sätter:
MAILTO=din@email.tld
och ändrar linjen till:
*/20 6-11 * * * /usr/local/bin/php /var/www/filnamn.php 2>&1
högst upp i crontaben, får du några mail då (förutsatt att scriptet skickar output)?

Vad säger cronloggen? /var/log/cron

.htaccess tolkas inte av cron-kommandot. Endast apache bryr sig.

Medlem sedan feb. 20034 441 inlägg
#4

colione skrev:

Vilken användare körs skriptet som? Vad har den för rättigheter på katalogen?

Det ligger hos Binero, så kan inte kolla några loggar på just det här (vad jag vet). Ska prova att lägga till 2>&1 och se om det hänt något imorgon.

Scriptet skickar lite output (som används då man kör samma från webbläsaren), påverkar det?

Kan det göra någon skillnad att byta ut */20 till 0,20,40?

Medlem sedan juni 20014 421 inlägg
#5

Nej det spelar ingen roll, det är bara enklare att felsöka om man skulle få nån form av output nånstans, i detta fallet mail. :)

Det ska inte göra någon skillnad att byta från det ena till det andra. Fast jag vet inte hur binera tolkar det du för in, om de skickar in det rakt av eller försöker parsea det.

Får du problem att köra det commandline som du vill kan du göra en ful-lösning med wget:

wget -q http://ulr.tld/script.php

Medlem sedan feb. 20034 441 inlägg
#6

Ska testa det här med WGET, vet att jag löst ett annat problem den vägen.
Finns det några begränsningar i vad PHP kan göra när det körs via cron? Det här scriptet loggar in på ett mailkonto via IMAP funktionerna som finns, scannar inboxen efter vissa attachments och laddar sedan upp alla "träffar" på en ftpserver.

Jag har tidigare haft problem med att SimpleXML inte funkar om scriptet körs via cron, kan det vara samma "fel" med IMAP funktionerna? Om det är såhär det ligger till, kan man läsa sig till vad som funkar / vad som inte funkar när man använder sig av cron?

Medlem sedan juni 20014 421 inlägg
#7

php-cli kör inte alltid med samma php.ini som mod_php-använder. Det kan betyda att vissa extensions inte är laddade/disablade. Inte speciellt troligt, men det kan nog bara binero svara på.

För att ta reda på vad som är konfigurerat för php-cli kan du använda:
php -r "phpinfo();"

Men har du inte tillgång till ssh måste du köra det via cron och maila outputen:
php -r "phpinfo();" | mail -s "Phpinfo" mail@url.tld

Har användaren som ska köra cron läsrättigheter på filen/mappen?

Medlem sedan feb. 20034 441 inlägg
#8

Jättekonstigt.. la in den här raden:

*/10 * * * * /usr/local/bin/php -r "phpinfo();" |*mail -s "Phpinfo" [email]min@mailadress.se[/email]

Gjorde det för två timmar sen men har inte fått några mail alls. Vad kan det tyda på? Fel i Binero konfiguration? Själva mailfunktionen finns, för när jag använder mail() i php så skickas mailet från "system" på den server jag ligger på.

Medlem sedan feb. 20034 441 inlägg
#9

Jag börjar tro att den server jag ligger på är paj... inte ens det här fungerar:

*/5 * * * * wget -O /dev/null "http://mindoman.se/runjob.php" > /dev/null 2>&1

Vad tror ni?

Medlem sedan feb. 20034 441 inlägg
#10

Upptäckte att runjob.php hade 644 som rättighet, dvs. inte körbar. Men ändrade till 755 och det händer fortfarande inget vid de rätta tidpunkterna.

Har nu två rader i crontab, en som använder php binären och en som använder wget, men inget av det fungerar.

Medlem sedan juni 20014 421 inlägg
#11

Det ska inte vara nån asterisk innan mail, jag som lyckades få in ett skräptecken. Men får du inget mail öht verkar det vara något fel på konfigurationen på servern.

Filens körbarhet spelar ingen roll då du inte anropar den som ett program, utan skickar den som argument till php. För att det ska fungera måste den vara läsbar för användaren som kör cronjobbet.

Det verkar som sagt vara något cron-fel. Prata med binero.

Medlem sedan feb. 20034 441 inlägg
#12

Okej, har ändrat till det här nu:

*/10 * * * * /usr/local/bin/php -r "phpinfo();" |mail -s "Phpinfo" [email]mail@doman.se[/email]

..återkommer när/om mailet kommer (eller inte).
Har iaf. mailat Binero och väntar på svar.

Någon annan som har konto på "freddy" som kan testa att lägga in ett cronjob?

Medlem sedan feb. 20034 441 inlägg
#13

Har inte direkt löst problemet, _men_ jag bytte till WGET och "plötsligt" började det funka.
Enligt Binero har dom inte ändrat något i sin konfiguration, men raden jag haft i listan över jobb började helt plötligt fungera utan att jag gjort något, märkligt.

Kan även avslöja för andra med liknande problem hos Binero att cron via php-binären kommer att förbjudas framöver, då den nya kontrollpanelen kommer.

Man får istället använda WGET.
Finns det några fördelar/nackdelar med det här, eller annat man bör veta om?

Medlem sedan sep. 20005 700 inlägg
#14

MickeA.com skrev:

Har inte direkt löst problemet, _men_ jag bytte till WGET och "plötsligt" började det funka.
Enligt Binero har dom inte ändrat något i sin konfiguration, men raden jag haft i listan över jobb började helt plötligt fungera utan att jag gjort något, märkligt.

Kan även avslöja för andra med liknande problem hos Binero att cron via php-binären kommer att förbjudas framöver, då den nya kontrollpanelen kommer.

Man får istället använda WGET.
Finns det några fördelar/nackdelar med det här, eller annat man bör veta om?

Ja, du bör känna till att förfrågan går via Apache om du kör wget http://dinadress/dittskript.php. Således kommer .htaccess in i bilden.

257 ms totalt · 3 externa anrop · v20260731065814-full.265f3fdd
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)