У меня есть сервер Apache, с которого я хостлюсь.
У меня есть страница php, которая отправляет электронные письма на основе некоторого скрипта, который выглядит следующим образом:
<?php
chdir(dirname(__FILE__)); //need this line so cron works! cron doesn't know
the relative file paths otherwise.
require_once 'core/init.php';
$db = DB::getInstance();
$company = new Company(1);
require 'added-assets/plugins/phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
if($company->find_yesterday_appts(1)) {
.... email based on query....
Из cpanel у меня есть задание cron, которое запускается каждый день в 12 часов.
0 12 * * * php -q public_html/personnellonline/email_yesterdays_appts.php
core / init.php содержит мою строку подключения.
На сервере мне не сообщалось об ошибках, но при запуске cron письма никогда не отправлялись. Если я сразу перейду на страницу, то запрос будет запущен и письма будут отправлены!
Однажды я решил эту проблему, добавив:
chdir(dirname(__FILE__)); //need this line so cron works! cron doesn't
know the relative file paths otherwise.
Но не я вернулся на круги своя. Есть мысли о том, в чем может быть проблема?
Когда вы говорите «Я иду на страницу напрямую», как именно вы заставляете вещи работать? Работает ли показанная нам команда PHP без использования cron?
Если вы загружаете страницу через веб-сервер, это не то же самое, что выполнение файла через PHP, как в команде cron. Если ваш скрипт необходимо запустить через веб-сервер, попробуйте использовать curl для загрузки URL, который работает в вашей команде cron.
Единственное, о чем я мог подумать, если запуск команды PHP на самом деле работает, когда она не выполняется через cron, это то, что вам может понадобиться определенный пользователь для выполнения команды cron.
GracefulRestart, я изменил команду, чтобы использовать CURL, который я никогда не использовал или о котором не слышал. Это работает сейчас, спасибо. Я узнаю о CURL сейчас, когда я читаю онлайн.
ArtisticPhoenix, вы правы. Я должен переместить это за пределы публичной области моего домена. Я сделаю это!
Следующее работает сейчас:
curl -s "https://www.example.com/email_yesterdays_appts.php"
Спасибо за ваши комментарии и помощь.