Я настроил cron для выполнения одного из моих php-скриптов. Но проблема в том, что php-скрипт вообще не выполняется, даже частично.
Вот cron, который я настроил
45 23 * * * /usr/bin/php -q /var/www/myscript.php
Я попробовал следующее
chmod +x /var/www/myscript.php
Я использовал команду whereis php
, которая дает следующее
php: /usr/bin/php /usr/share/man/man1/php.1.gz
Теперь я не знаю, что еще я могу сделать. Пожалуйста, помогите.
P.S. Я могу выполнить сценарий вручную, и он отлично работает.
См. man cron
и специфичные для Debian изменения. Цитата:
> Как описано выше, файлы в этих каталогах должны проходить некоторые проверки работоспособности, включая следующие: быть исполняемыми, принадлежать пользователю root, не быть доступными для записи для группы или других и, если символические ссылки, указывать к файлам, принадлежащим пользователю root. Кроме того, имена файлов должны соответствовать требованиям к имени файла для частей выполнения: они должны быть полностью состоят из букв, цифр и могут содержать только специальные знаки подчеркивания ('_') и дефисы ('-'). Любой файл, который не соответствует этим требованиям, не будет выполняться частями выполнения. Например, любой файл, содержащий точки, будет игнорироваться.
man php
говорит нам ... --no-header
-q Quiet-mode. Suppress HTTP header output (CGI only).
--file file
-f file Parse and execute file
-q
ничего не делает в режиме php-cli. Как уже отмечали другие, вам нужно -f
.
Вернуть его с помощью:
chmod -x /var/www/myscript.php
whereis
даст вам все места. Если вы хотите просто двоичный файл, используйте which php
. $ which php
/usr/bin/php
Правильная строка crontab будет выглядеть следующим образом:
45 23 * * * /usr/bin/php -f /var/www/myscript.php
Обратите внимание на -f
вместо -q
!