Premiär! Fyndchans i SweClockers Månadens Drop

PHP-shell script körs inte i crontab

Permalänk
Medlem

PHP-shell script körs inte i crontab

Jag gjort ett par PHP script till min websida som bland annat städar upp i databasen och kollar vissa grejer. Dessa script vill jag köra med crontabs men scripten verkar inte köras.

Jag kör Debain Etch med lighttpd och PHP5 som cgi.

Jag har skrivit #!/usr/lib/cgi-bin/php5 -q längst upp i filerna och de går utmärkt att köra via med ett vanlig kommando(t.ex. "/home/user/www/optimizedb.php"). Men när jag skiver in samma kommando i ett cronjob så händer det ingenting.
Cronjobet körs med root-kontot och ser ut enligt följande:

* 5,11,17,23 * * * root /home/user/www/script.php

Men scriptet körs aldrig. Någon som vet vad som kan vara fel?

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com

Permalänk
Medlem

testa

* 5,11,17,23 * * * root php /home/user/www/script.php

Permalänk
Medlem

Har du installerat php5-cli?
Det kanske går lättare att köra php-filen med det kommandot.

Permalänk
Medlem

Tack för svaren, men jag kan inte få det att funka

Jag kör PHP med php-cgi paketet och det går som sagt utmärkt att köra php scripten med både /usr/lib/cgi-bin/php5 och /usr/bin/php5-cgi men i crontb händer det inget.

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com

Permalänk
Medlem

Det är inte samma miljö att köra i CLI och i crontab, så det är inte säkert att den hittar alla bilbliotek som den behöver osv.

Lättaste sättet att testa det är att göra ett shellscript som sätter upp miljön så att den är samma som då du kör från shellet och sedan köra det i crontab.

hur din miljö ser ut ser du med kommandont "env"

Visa signatur

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

Permalänk
Medlem

Okej, det låter ju troligt.

Jag har dock ingen aning om hur ett sådant script skulle kunna göras så där skulle jag nog behöva lite hjälp.

Kommandot "env" ger förjande(jag har rensat bort lite känslig data och sådant som inte borde ha någon betydelse):

TERM=xterm
SHELL= /bin/bash
SSH_TTY= /dev/pts/0
USER=root
PATH= / usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PS1= \ h:\w\$
SHLVL=1
HOME= / root
_= /usr/bin/env

Någon som kan hjälpa mig med ett shellscript som gör att jag kommer åt alla bibliotek m.m. för att kunna köra mina phpscript?

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av pekz0r
Okej, det låter ju troligt.

Jag har dock ingen aning om hur ett sådant script skulle kunna göras så där skulle jag nog behöva lite hjälp.

Kommandot "env" ger förjande(jag har rensat bort lite känslig data och sådant som inte borde ha någon betydelse):

TERM=xterm
SHELL= /bin/bash
SSH_TTY= /dev/pts/0
USER=root
PATH= / usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PS1= \ h:\w\$
SHLVL=1
HOME= / root
_= /usr/bin/env

Någon som kan hjälpa mig med ett shellscript som gör att jag kommer åt alla bibliotek m.m. för att kunna köra mina phpscript?

Om du lägger "env > /cronenv" raden efter #!/usr/lib/cgi-bin/php5 -q, vad står det i /cronenv?

Visa signatur

qw q b

Permalänk
Medlem

I PHPscriptet menar du då eller?

När jag gör det så skrivs bara raden "env > /cronenv" ut när scriptet körs.

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av pekz0r
I PHPscriptet menar du då eller?

När jag gör det så skrivs bara raden "env > /cronenv" ut när scriptet körs.

Mitt fel, tänkte fel, skulle just rusa till lunch också. Det ska inte in i PHP-scriptet utan in i crontaben, ala:
*/2 * * * * root env > /cronenv

Visa signatur

qw q b

Permalänk
Medlem

Ursäkta mig!
Det var inte detta som var fel xD
Felet låg på en annan rad i min crontabfil och därför kördes inte någon av mina crontabs. Nu funkar det iaf som det ska

Tack så mycket för att ni försökte hjälpa mig ändå!

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com