Запуск задания cron в CodeIgniter и Hostgator

Я пытаюсь запустить следующую работу cron в codeigniter и hostgator

/usr/bin/php /home/username/public_html/index.php cronjob contact martin 

Но ничего не происходит, я получаю следующее письмо:

 <h4>A PHP Error was encountered</h4> <p>Severity: Notice</p> <p>Message: Undefined index: REMOTE_ADDR</p> <p>Filename: core/Input.php</p> <p>Line Number: 351</p> <p>Severity: Warning</p> <p>Message: Cannot modify header information - headers already sent by (output started at /home/iglesias/public_html/mysite.com/system/core/Exceptions.php:185)</p> <p>Filename: libraries/Session.php</p> <p>Line Number: 675</p> 

Мой контроллер выглядит следующим образом (просто отправляя электронное письмо для проверки).

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Cronjob extends CI_Controller { function __construct() { parent::__construct(); $this->cron(); } function cron() { if(!$this->input->is_cli_request()) { die(); } } function contact($name) { $this->load->library('email'); $config['mailtype'] = 'html'; $this->email->initialize($config); $this->email->from('test@gmail.com', $name); $this->email->to('test2@gmail.com'); $this->email->subject('test'); $this->email->message('test sent'); $this->email->send(); } } 

Я делаю что-то неправильно? Я бы очень признателен вам за вашу помощь.

Я изменил .htaccess, чтобы удалить index.php при вызове из URL-адреса, я не знаю, есть ли у этого что-то делать.

благодаря

вы настроили правильный маршрут в config / routes.php? Попробуйте запустить сценарий из своего браузера (или закомментируйте часть выполнения), чтобы убедиться, что он доступен с вашей текущей настройкой маршрута / htaccess.

мой ответ приходит долгое время, но это может помочь другим людям. Эта ошибка, по-видимому, хорошо известна, но для нее есть только быстрое исправление: http://ellislab.com/forums/viewthread/227672/ В ней говорится, что это происходит, когда вы загружаете библиотеку сеансов, она вызывает CI_Input :: ip_address () который не инициализирован или что-то в этом роде. Быстрое исправление находится во входном классе (core / Input.php Line 351 (CI 2.1.2)):

 $this->ip_address = $_SERVER['REMOTE_ADDR']; 

стали :

 if(isset($_SERVER['REMOTE_ADDR'])) $this->ip_address = $_SERVER['REMOTE_ADDR']; else $this->ip_address = '0.0.0.0'; 

Надеюсь это поможет.

Проверьте, не работает ли Hostgator Apache как Fast-CGI вместо модуля. Если это так, путь запуска к PHP может отличаться от того, что вы используете.

Вы можете увидеть соответствующую информацию, если вы проверите phpinfo.

Большой ответ от @mariek

Но мы также можем сделать это, просто используя знак @ перед синтаксисом.

Так что просто сделал небольшое изменение в строке «core / Input.php» № 352 (CI версия 2.2.2)

$this->ip_address = $_SERVER['REMOTE_ADDR'];

в

$this->ip_address = @$_SERVER['REMOTE_ADDR'];

и его сделано.