2013-04-02 2 views
2

Я пытаюсь выполнить задание последующих хрон в CodeIgniter и HostgatorRun хрон работа в 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('[email protected]', $name); 
    $this->email->to('[email protected]'); 
    $this->email->subject('test'); 
    $this->email->message('test sent');    
    $this->email->send(); 
} 
} 

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

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

Благодаря

+0

Я просто хочу подтвердить, что вы можете запустить страницу CodeIgniter с помощью CLI из задания cron. Как вы получили сообщение с сообщением об ошибке? –

ответ

0

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

+0

Я запустил сценарий из браузера, и он работает нормально. –

+0

Я установил его с помощью wget и url –

+1

, пожалуйста, поделитесь примером, чтобы установить маршруты и настройку htaccess. – parth

0

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

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

14

Мой ответ наступает после долгого времени, но он может помочь другим людям. Эта ошибка, по-видимому, хорошо известна, но есть только быстрое исправление для нее: http://ellislab.com/forums/viewthread/227672/ В ней говорится, что это происходит, когда вы загружаете библиотеку сеансов автозагрузки, она вызывает CI_Input :: ip_address(), которая не инициализирована или что-то в этом роде. Быстрого исправления в классе ввода (ядро/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'; 

Надеется, что это помогает.

+0

Просто подтвердите, что это все еще имеет место в версии 2.1.4. И исправление работает! –

+0

Ссылка не работает –

+2

Да, действительно.CI изменил весь форум, и я не могу найти сообщение снова. Вот почему я поставил быстрое исправление прямо в свой пост, поэтому он не потерян, даже если источник недоступен. – mariek

0

Великий ответ на @mariek

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

Так Просто сделал небольшое изменение в "ядро/Input.php" Line # 352 (CI вер. 2.2.2)

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

в

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

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