Вопрос по php – как запустить php файл с помощью заданий cron

15

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

Теперь, когда я запускаю скрипт php с использованием заданий cron, он также работает нормально, но когда я задаю какой-то запрос, задания cron не поймут ссылку.

например:http://www.wetube.org/cron.php?id=01001 так что теперь, если я попытаюсь запустить это каждый день, используя cron job, это не сработает.

Но если мы просто удалим запрос, он будет работать нормально. Ребята, вы знаете какой-нибудь код, который заставляет эту ссылку работать в cron job?

Что значит "поставить какой-то запрос"? имею в виду? Кроме того, что вы указали в качестве команды для cron-job? Lukas Knuth

Ваш Ответ

2   ответа
7

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 с одной и той же солью и, возможно, даже временем, а затем проверить, совпадают ли они - хакер не сможет воссоздать его - кроме случаев, когда он каким-то образом получит ваш оригинал настройка хэша

37

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

Вам нужно использовать команду вроде:

php /home/USER/public_html/cron.php

Или, если необходимо включить строку запроса, используйте взамен cURL (если он установлен):

curl http://www.wetube.org/cron.php?id=01001

Возможно, вы захотите не раскрывать свои скрипты cron в Интернете - переместите их за пределы вашего веб-каталога, потому что, если кто-то найдет его, он может постоянно перезагружать его, чтобы спамить ваши скрипты cron (то есть отправлять много писем)

спасибо человек, но что я могу добавить еще, чтобы предотвратить отправку отчета Mustafa M Jalal
Если вам нужно запустить скрипт через HTTP (что, как правило, является плохой идеей), а ваш сервер имеет статический (и выделенный) IP-адрес, вы можете ограничить доступ только с вашего сервера, заключив свой скрипт cron в условная проверка того, что$_SERVER['REMOTE_HOST'] соответствует IP-адресу вашего сервера. Это не является надежной защитой, и ваша самая безопасная ставка - просто иметь скрипт cron за пределами вашего веб-каталога.

Похожие вопросы