Назад | Перейти на главную страницу

Debian cron справка по доступу к URL

В документации сказано, что мне нужно:

Если ваша учетная запись хостинга находится в системе LINUX / UNIX, вы можете настроить задание CRON, чтобы оно указывало на этот URL http://yourUrlToThisScript.com/cron.php?cron=do&d=31

Хотя это единственная информация, которую они дают о том, как настроить cron. Я знаю, что сценарий работает правильно, потому что, когда я открываю URL-адрес в браузере, я получаю электронные письма.

  1. Я просмотрел несколько примеров и попытался прочитать руководство: Выполнение файлов PHP и придумали: */1 * * * * /usr/bin/php -q /var/www/website/public/domain-manager/cron.php cron=do&d=31 >/dev/nul

Хотя это не работает, и я не получаю писем или сообщений об ошибках?

  1. Как я могу защитить этот файл cron.php чтобы его нельзя было запустить из браузера? Может что-то вроде этот ответ хотя для одного файла, а не для каталога.

Есть небольшая разница в том, как вы вызываете PHP-скрипт и особенно в том, как он будет обрабатывать заданные параметры. Документация посвящена HTTP-запросу GET, и вы выполняете вызов PHP-скрипта из командной строки.

Пример HTTP-запроса GET, выполняемого из командной строки:

wget -q -O  - "http://localhost/domain-manager/cron.php?cron=do&d=31"

Пример выполнения PHP-скрипта через командную строку:

php -f /var/www/website/public/domain-manager/cron.php cron=do d=31

Основное различие заключается в том, как PHP получит параметры. Для HTTP-запроса PHP будет использовать интерфейс для Apache или любого другого веб-сервера, который вы используете, и будет получать параметры в массиве $ _GET. Для вызова командной строки PHP должен использовать массив $ argv.

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

Рекомендации для вашего crontab:

*/2 * * * * wget -q -O  - "http://localhost/domain-manager/cron.php?cron=do&d=31" > /dev/null 2>&1

Рекомендация по защите этого файла от внешнего запроса: Содержимое /var/www/website/public/domain-manager/.htaccess (в том же каталоге)

<files cron.php>
order deny,allow
deny from all
allow from localhost
</files>