Cronjob и PHPmailer не работают должным образом - PullRequest
0 голосов
/ 06 марта 2019

У меня есть два задания cron

0 8 * * *   /usr/bin/php /var/www/Apps/Appsname/Extract.php
*/2 * * * * /usr/bin/php /var/www/Apps/Appsname/weeklybusinessemail.php

Cronjob extract отлично работает.

Weeklybusinessemail.php не работает.

Имеется скрипт phpmailer с вложениямив нем.

Когда я запускаю weeklybusinessemail.php через URL, он работает и отправляет электронное письмо, а через crontab - нет!Все имена совпадают.

Любая помощь будет принята с благодарностью

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Трудно сказать без дополнительной информации об отладке, но распространенной проблемой при запуске задач cron является расположение рабочего каталога. Если вы ожидаете, что ваши вложения находятся в папке со сценарием и ссылаются на них, используя относительные пути, такие как filename.txt, этот путь относится не к сценарию, а к рабочей директории процесса cron, которая может быть где угодно. Он работает, когда вы запускаете его из Интернета, потому что ваш веб-сервер меняет каталог на корневой каталог виртуального хоста перед запуском вашего скрипта, поэтому будут работать относительные пути.

Попробуйте либо использовать абсолютные пути для файловых вложений (например, используя __DIR__.'/filename.txt'), либо смените каталог перед запуском задачи cron:

*/2 * * * * cd /var/www/Apps/Appsname && /usr/bin/php /var/www/Apps/Appsname/weeklybusinessemail.php
1 голос
/ 06 марта 2019

> /dev/null перенаправляет стандартный вывод.
2>&1 перенаправляет стандартную ошибку (2) на стандартный вывод (1)

Попробуйте:

*/2 * * * * php /var/www/Apps/Appsname/weeklybusinessemail.php > /dev/null 2>&1

если приложение mvc:

*/2 * * * * php /var/www/Apps/Appsname/index.php controller_folder/controller_class_name > /dev/null 2>&1
...