Я запускаю тестирование Debian и не могу заставить простой cron запускать скрипт PHP с символической ссылкой.
У меня есть скрипт php в подкаталоге в моей домашней папке /home/foobar/dir/script.php
(который начинается со следующего слова shebang #!/usr/bin/env php
).
Я создал символическую ссылку, которая указывает на нее:
sudo ln -s ~/dir/script.php /usr/local/bin/whatever
ls -la /usr/local/bin
lrwxrwxrwx 1 root staff 24 Feb 27 17:46 whatever -> /home/foobar/dir/script.php*
И добавил в мой crontab следующее правило (выполнить whatever
каждую минуту):
crontab -e
* * * * * whatever
Но это не работает, Я получаю следующую ошибку:
cat /var/mail/foobar
...
/bin/sh: 1: whatever: not found
Пока указание на скрипт без использования символической ссылки работает:
crontab -e
* * * * * /home/foobar/dir/script.php
Любая идея?
Каталоги вроде /usr/local/bin
и /usr/local/sbin
не по умолчанию в cronjobs $PATH
. Но вы можете переопределить $PATH
в crontab просто поместите что-то вроде этого перед любыми заданными cronjobs
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Переменная среды $ PATH в cron ограничена и не будет включать ни / usr / local / bin, ни / home / foobar / dir. Как вы выяснили, правильный ответ - полностью указать путь к сценарию в вашем crontab; это приводит к меньшему количеству сюрпризов.