Не знаю, сталкивался ли у кто-нибудь с такой проблема, но определенно она может возникнуть: злоумышленник способен подвесить сайт, постоянно обращаясь к файлу cron.php
. Поэтому хорошо бы закрыть к нему доступ со стороны. В грядущей 7-й версии Drupal'а решение этой проблемы отдают на откуп ядру (кажется, при обращении по адресу http://example.com/cron.php можно будет указывать уникальный ключ, известный только владельцу сайта).
Итак, нам потребуется возможность править файл .htaccess
, расположенный в корне директории, в которой установлен Drupal. Если такой возможности нет, то нужно просить администратора прописать эти настройки для вашего виртуального хоста.
В конце файла .htaccess
пишем следующее:
Order Deny,Allow
Deny from all
Allow from localhost
Allow from 127.0.0.1
Allow from xxx.xxx.xxx.xxx
Allow from yyy.yyy.yyy.yyy
</Files>
Что здесь есть что:
<Files "cron.php">...</Files>
— доступ к файлуcron.php
веб-сервер будет контролировать индивидуально; между этими тегами (<Files "cron.php">
и</Files>
) помещаются команды, специфичные только для доступа к файлуcron.php
Order Deny,Allow
— порядок, в котором выполняются указываемые далее директивы:- сначала будут просмотрены все директивы
Deny
, и «в первом приближении» доступ к файлу будет запрещенв тех случаях когда они «срабатывают»: в данном случае «срабатывает» директиваDeny from all
— запретить доступ абсолютно всем - далее просматриваются директивы
Allow
; они «перекрывают» выставленные ранее директивыDeny
: в данном случае доступ кcron.php
будет открыт с вашего сервера (Allow from localhost
иAllow from 127.0.0.1
) и с вашего домашнего/рабочего компьютера (Allow from xxx.xxx.xxx.xxx
); также почти наверняка нужно будет указать и внешний адрес вашего сервера (Allow from yyy.yyy.yyy.yyy
), если вы автоматизировали запуск cron-процедур с помощью crontab
- сначала будут просмотрены все директивы
Подробнее о директивах .htaccess
см. Google: «apache directive»
И да, не забудьте заменить xxx.xxx.xxx.xxx
и yyy.yyy.yyy.yyy
на соответствующие IP-адреса.
Комментарии
Баян
если хостер не дает возможности разогнаться с .htaccess, то можно в cron.php дописать вначале файла:
<?php
if($_SERVER['REMOTE_ADDR'] !== 'айпи сервера')
exit();
?>
что значит не выполнять дальше скрипт, если ваш айпи не равен айпи вашего сервера.
и адсином с admin/reports/status вручную тоже будет запускаться.
узнать айпи вашего сервака можно например так:
<?php
var_dump($_SERVER['REMOTE_ADDR']);
?>
У меня возникала такая проблема. И нашел ответ вот здесь.
Думаю подробнее и более понятние даже новичку рассказывается здесь