Вечер добрый!
есть свой php скрипт, который, по сути, - icq бот, где подключаю <?php require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; ?>
и пользуюсь функциями drupal для работы с БД. его задача сделать выборку из БД в соответсвии с определенными условиями, сформировать сообщения и разослать в аськи нескольким группам пользователей. (1 группа - сообщение #1, 2я группа - сообщение #2, и т.д.) при рассылке сообщений срабатывают несколько счетчиков для подсчета результатов деятельности.
положил этот скрипт в корень сайта (public_html) и обращаюсь к скрипту хттп запросом напрямую: http://site.ru/icq.php
что интересно, cms сообщает, что страница не найдена, но, тем не менее скрипт свою задачу выполняет корректно: сообщения рассылаются ровно такие и в том кол-ве, как и должно быть. по завершению работы скрипта, записывается корректный отчет в бд, как и задумано.
первый вопрос: как такое может быть?
далее второй и главный вопрос: как заставить этот скрипт выполняться кроном? если при том, что непосредственно в CPanel задание вида /usr/bin/php -f /home/gameremi/public_html/icq.php
возвращает следующие ошибки:
Notice: Undefined index: REMOTE_ADDR in /home/gameremi/public_html/includes/bootstrap.inc on line 2597
Notice: Trying to get property of non-object in /home/gameremi/public_html/modules/dblog/dblog.module on line 144
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'uid' cannot be null: INSERT INTO {watchdog} (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9); Array ( [:db_insert_placeholder_0] => [:db_insert_placeholder_1] => php [:db_insert_placeholder_2] => %type: !message in %function (line %line of %file). [:db_insert_placeholder_3] => a:6:{s:5:"%type";s:6:"Notice";s:8:"!message";s:29:"Undefined index: REMOTE_ADDR";s:9:"%function";s:12:"ip_address()";s:5:"%file";s:49:"/home/gameremi/public_html/includes/bootstrap.inc";s:5:"%line";i:2597;s:14:"severity_level";i:5;} [:db_insert_placeholder_4] => 5 [:db_insert_placeholder_5] => [:db_insert_placeholder_6] => http:///?/home/gameremi/public_html/icq.php [:db_insert_placeholder_7] => [:db_insert_placeholder_8] => [:db_insert_placeholder_9] => 1303832462 ) in dblog_watchdog() (line 155 of /home/gameremi/public_html/modules/dblog/dblog.module).
резюме: скрипт работает и работает корректно, но cron возвращает ошибки.
в чем тут может быть, по Вашему мнению, проблема?
Комментарии
оформи скипт в виде модуля и крон привяжешь к пути сата - ошибки должны пропасть.
если не затруднит, дайте пару ссылок с примерами оформления скрипта в виде модуля. либо с поиском что-то, либо со мной, но запрос "как оформить скрипт в виде модуля drupal" выдает по большей части интернет-магазины и др. бесполезное для меня.
заранее спасибо
в том, что cli-версия не устанавливает переменных окружения которые нужны друпал. написать в начале скрипта подобное -
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['SERVER_SOFTWARE'] = 'apache/2.2.1';
chdir('/home/gameremi/public_html');
спасибо за совет, вроде продвигается дело. ошибки изчезли.
Это не решение, а костыль. Сейчас предупреждения исчезли, а потом проблемы всплыть могут в неожиданном месте.
SCRIPT_NAME надо заменить на SCRIPT_FILENAME
В конфигурации сервера добавить передачу параметра REMOTE_ADDR компилятору PHP.
Вот пример рабочей конфигурации, где nginx работает через php-fpm и передает те самые переменные окружения _SERVER:
fastcgi_pass unix:/var/sockets/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/site$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REMOTE_ADDR $remote_addr;
}
remage.su
hotel-prog.ru
drupaldance.com
xandeadx.ru