apache — PHP Cron страница не работает

У меня есть сервер 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.

Но не я вернулся на круги своя. Есть мысли о том, в чем может быть проблема?

0

Решение

Когда вы говорите «Я иду на страницу напрямую», как именно вы заставляете вещи работать? Работает ли показанная нам команда PHP без использования cron?

Если вы загружаете страницу через веб-сервер, это не то же самое, что выполнение файла через PHP, как в команде cron. Если ваш скрипт необходимо запустить через веб-сервер, попробуйте использовать curl для загрузки URL, который работает в вашей команде cron.

Единственное, о чем я мог подумать, если запуск команды PHP на самом деле работает, когда она не выполняется через cron, это то, что вам может понадобиться определенный пользователь для выполнения команды cron.

0

Другие решения

GracefulRestart, я изменил команду, чтобы использовать CURL, который я никогда не использовал или о котором не слышал. Это работает сейчас, спасибо. Я узнаю о CURL сейчас, когда я читаю онлайн.

ArtisticPhoenix, вы правы. Я должен переместить это за пределы публичной области моего домена. Я сделаю это!

Следующее работает сейчас:

 curl -s "https://www.example.com/email_yesterdays_appts.php"

Спасибо за ваши комментарии и помощь.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector