CLI (интерфейс командной строки) Cron Job не получает правильного контроллера

Я почти успешно установил задание Cron на своем сервере, но я не могу назвать правильный контроллер.

Когда я удаляю CLI, только если оператор я могу успешно запустить скрипт из своего браузера.

// Make sure the request is being made by a CRON Job if ( ! $this->input->is_cli_request()) exit('Only CLI access allowed'); 

У меня есть выход, отправленный по электронной почте Cron Daemon. Я пробовал эту команду и следую моим результатам.

работа:

 /usr/bin/php /home/dlp/public_html/abc.org/index.php birthday 

Результат:

Я получаю 2 сообщения электронной почты в 1-м birthdady электронной почты HTML по умолчанию контроллера index.php и на 2-м birthdady электронной birthdady контроллера birthdady .

код моего контроллера.

  <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Birthday extends CI_Controller { function __construct() { parent::__construct(); $this->load->helper('url'); $this->load->database(); $this->load->library('email'); } /**** function for sending news letter on birthday ****/ function index() { error_log("birthday function call",1,"abc@gmail.com"); exit; } } ?> 

Я не уверен, что я делаю неправильно.

Заранее спасибо за помощь.

Solutions Collecting From Web of "CLI (интерфейс командной строки) Cron Job не получает правильного контроллера"

Вы пишете только имя контроллера в cronjob, но вы должны написать имя метода также, когда метод является индексом. Таким образом, в вашем случае вы пишете birthday/index в своей cronjob. ИЛИ

  1. Создайте конфигурационный файл cron.php в application/config с данными как:

$ Конфиг [ 'CRON_TIME_LIMIT'] = 0;

$ config ['argv'] = array (1 => 'birthday');

$ Конфиг [ 'CRON_BETA_MODE'] = ложь;

  1. Создайте cron.php в корневом каталоге parrallel в папку приложения, содержащую данные как

//! / USR / бен / PHP

 <?php define('CRON', TRUE); // Load CRON config require('/home/dlp/public_html/abc.org/application/config/cron.php'); // Set CRON mode ( live or beta ) define('CRON_BETA_MODE', $config['CRON_BETA_MODE']); // Set index.php location if (isset($config['CRON_CI_INDEX']) && $config['CRON_CI_INDEX']) define('CRON_CI_INDEX', $config['CRON_CI_INDEX']); else define('CRON_CI_INDEX', '/home/dlp/public_html/abc.org/index.php'); if (count($argv) < 2) if (count($config['argv'])) { $argv = array_merge($argv, $config['argv']); $_SERVER['argv'] = $argv; } else die('Use: php cron.php controller/method'); // Simulate an HTTP request $_SERVER['PATH_INFO'] = $argv[1]; $_SERVER['REQUEST_URI'] = $argv[1]; //$_SERVER['SERVER_NAME'] = $config['SERVER_NAME']; // Set run time limit set_time_limit($config['CRON_TIME_LIMIT']); // Run CI and capture the output ob_start(); chdir(dirname(CRON_CI_INDEX)); // echo "== ".CRON_CI_INDEX; die; require( CRON_CI_INDEX ); // main CI index.php file $output = ob_get_contents(); if (CRON_FLUSH_BUFFERS === TRUE) while (@ob_end_flush()); // display buffer contents else ob_end_clean(); echo "\n"; ?> 
  1. Запустите cron файл как php

/home/dlp/public_html/abc.org/cron.php