Как запустить php файл с использованием заданий cron
У меня есть расписание электронной почты, которое выполняется каждый день на php-странице, используя задания cron. PHP-код работает нормально, когда я запускаю страницу с помощью ссылки.
Теперь, когда я запускаю php script с помощью заданий cron, он также отлично работает, но когда я помещаю некоторый запрос, задания cron не поймут ссылку.
например: http://www.wetube.org/cron.php?id=01001
так что теперь, если я пытаюсь запустить это каждый день с помощью задания cron, он не работает.
Но если мы просто удалим запрос, он отлично работает. Вы знаете какой-нибудь код, который заставляет эту ссылку работать в работе cron?
Ответы
Ответ 1
Cron запускает команды, поскольку они будут запускаться через оболочку, поэтому запуск PHP будет использовать локальные пути.
Вам нужно использовать команду:
php /home/USER/public_html/cron.php
Или, если требуется включить строку запроса, вместо этого используйте cURL (если она установлена):
curl http://www.wetube.org/cron.php?id=01001
Возможно, вам стоит взглянуть на то, чтобы не подвергать свои скрипты cron интернету - переместите их за пределы своего веб-каталога, потому что, если кто-то обнаружит это, они могут постоянно перезагружать его, чтобы спамить ваши скрипты cron (то есть отправлять много писем)
Ответ 2
Я бы добавил хэш как
curl http://www.wetube.org/cron.php?id=01001&hash=cm349ucKuc023b2ynGyv23ycr23
и в php файле
if(isset($_GET['hash']) && $_GET['hash']=='cm349ucKuc023b2ynGyv23ycr23'){
....
stuff to do
....
}
* вы даже можете добавить определенную проверку времени/даты, когда она должна быть запущена.
* вы можете проверить IP
* генерировать sha512 (я бы рекомендовал) хеши как в cron, так и в php файле с той же солью и, возможно, даже временем, а затем проверить, совпадают ли они - хакеры не смогут воссоздать его, за исключением случаев, когда он каким-то образом получит ваш оригинал хэш-настройка