Składnia wpisu crontab wygląda poprawnie. Rzeczywiście, jeśli edytujesz swój plik crontab za pomocą „ crontab -e
” (tak jak powinieneś), pojawi się błąd, jeśli i tak określisz niepoprawnie składniową pozycję pliku crontab.
Po pierwsze, czy /path_to_my_php_script/info.php
działa poprawnie z wiersza poleceń?
Jeśli tak, to czy działa poprawnie tak:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
Jeśli to działa, czy to działa w ten sposób?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
Krok (3) jest podobny do tego, w jaki sposób cron uruchomi twój program (jak udokumentowano w „man 5 cron”).
Najbardziej prawdopodobnym problemem jest to, że cron PATH używa do uruchomienia programu, jest zbyt restrykcyjny. Dlatego możesz chcieć dodać coś takiego jak poniżej na górze wpisu crontab (musisz dodać katalogi, których będzie potrzebował twój skrypt):
PATH=~/bin:/usr/bin/:/bin
Zauważ też, że cron domyślnie użyje /bin/sh
, a nie bash. Jeśli potrzebujesz bash, dodaj go również na początku pliku crontab:
SHELL=/bin/bash
Zauważ, że obie te zmiany wpłyną na wszystkie wpisy crontab. Jeśli chcesz zmodyfikować te wartości dla swojego info.php
programu, możesz zrobić coś takiego:
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
Warto również wspomnieć, że w systemie skonfigurowanym dla „mail” (innymi słowy w systemie, który ma skonfigurowany MTA [sendmail / postfix / etc]), wszystkie dane wyjściowe z programów crontab są wysyłane automatycznie pocztą elektroniczną. Domyślny system komputerowy Ubuntu nie ma skonfigurowanej poczty lokalnej, ale jeśli pracujesz na serwerze, możesz po prostu wpisać „mail” w terminalu, aby zobaczyć wszystkie te wiadomości cron. Dotyczy to również at
polecenia „ ”.