Задать вопрос
guvijur
@guvijur
Практик, кинестетик, ретроград и консерватор

Почему из crontab не выполняется php, а если выполнить из консоли, то всё работает?

Добрый день!

Комп на ОС CentOS 6.10.
Есть php-файл, который должен выполнить некоторый код, сформировать файл и послать его по почте с помощью консольного почтового клиента "email".

Запуск этого файла командой /usr/bin/php -f /path-to-script/sendreport.php успешен. Мне приходит письмо с прикреплённым файлом.
Решил поместить эту команду в crontab:
63f329765ac82707967642.jpeg
то возникает проблема, которая выражается в том, что файл, который должен сформировать код в php-файле, не формируется или формируется, но не сохраняется, а так же не приходит письмо.

Моё предположение - это то, что при выполнении файла через cron не хватает каких-то данных их окружения (переменные среды или типа того).

В PHP скрипте, помимо всего описанного, есть запрос к БД MySQL, а консольный почтовый клиент вызывается через exec0.
Вот та часть кода, которая не выполняется 100%:
$fh = fopen($filename, 'w');
fwrite($fh, $result);
fclose($fh);

// $result - содержит код, который будет помещён в файл.

exec("/bin/echo 'Отчёт по исходящим вызовам' | /usr/local/bin/email -f no-reply@domain.ru -a " . $filename . " -n 'Report System' -s 'Отчёт по исходящим вызовам' -r mail.domain.ru -p 25 -m login -u no-reply@domain.ru -i PASSWORD admin@domain.ru");


Если по поводу переменных окружения я прав, то подскажите как их добавить и куда, чтобы всё заработало?
Спасибо.
  • Вопрос задан
  • 73 просмотра
Подписаться 1 Средний 4 комментария
Решения вопроса 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
cd сделай вначале в директорию со скриптом
и проверь, что скрипт в консоле срабатывает от имени пользователя, которому хостинг назначен
возможно таску придется в задания рута добавить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы