Cron запускает скрипт, но код не выполняется

#php #linux #cron

#php #linux #cron

Вопрос:

У меня есть cronjob, который выглядит следующим образом:

 30-59/1 13 * * 1-5 /usr/bin/php /home/myproject/main/logic.php 2>amp;1 >>/home/myproject/main/cronlog.txt
  

Я могу нормально запустить скрипт из командной строки.

И я вижу, что он запускается в системном журнале.

 grep CRON /var/log/syslog

Apr  5 18:51:01 ip-x-x-x-x CRON[30277]: (ubuntu) CMD (/usr/bin/php /home/myproject/main/logic.php 2>amp;1 /home/myproject/main/cronlog.txt)
  

Разрешения:

 -rwxrwxr-x 1 root root 4791 Apr  5 18:31 logic.php
  

В моем php-файле:

 require '/home/myproject/main/data.php';
require '/home/myproject/vendor/autoload.php';
  

Но код в моем скрипте фактически не выполняется.

Есть идеи, что я здесь делаю не так?

Комментарии:

1. Вы проверили журналы ошибок?

2. Я отправляю stderr в текстовый файл, но он пуст. Какой-либо конкретный журнал, который я должен проверить?

Ответ №1:

Вы отправляете stderr в стандартный вывод, но никуда не отправляете стандартный вывод. Необходимо поместить > перед вашим файлом.

 30-59/1 13 * * 1-5 /usr/bin/php /home/myproject/main/logic.php 2>amp;1 >/home/myproject/main/cronlog.txt