在CodeIgniter和Hostgator中运行cron作业

Mar*_*ias 2 php cron codeigniter command-line-interface

我正在尝试在codeigniter和hostgator中运行follow cron作业

/usr/bin/php /home/username/public_html/index.php cronjob contact martin
Run Code Online (Sandbox Code Playgroud)

但没有任何反应,我收到以下电子邮件:

<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>
Run Code Online (Sandbox Code Playgroud)

我的控制器如下(只需发送电子邮件进行测试).

<?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();
}
}
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?我将衷心感谢您的帮助.

当从URL调用时,我更改了.htaccess以删除index.php,我不知道这是否有事可做.

谢谢

mar*_*iek 14

我的回答很久以后,但它可以帮助其他人.这个错误显然是众所周知的,但只有一个快速解决方法: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'];
Run Code Online (Sandbox Code Playgroud)

成为:

if(isset($_SERVER['REMOTE_ADDR']))
   $this->ip_address = $_SERVER['REMOTE_ADDR'];
else
   $this->ip_address = '0.0.0.0';
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 确实是的.CI改变了整个论坛,我再也找不到帖子了.这就是为什么我将快速修复直接放在我的帖子中,所以即使源不可用也不会丢失. (2认同)