Работа Codeigniter cron не работает

У меня такая работа cron:

/usr/bin/php /var/www/website/public_html/index.php className methodName 

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

У меня также есть маршрутизация, которая добавляет «en» в url, например

 http://www.website.com/en/home/index 

может ли это быть проблемой?

мои настройки config.php:

 $config['uri_protocol'] = 'AUTO'; $config['index_page'] = ''; 

шаги по подготовке CodeIgniter 2.x для cron-заданий через CLI (интерфейс командной строки):

1-й: создайте копию корневого файла index.php и сохраните ее в корне как cli.php

2nd: в вашем cli.php замените <?php на этот код:

 #!/usr/local/bin/php <?php /* override normal limitations */ set_time_limit(0); ini_set('memory_limit', '256M'); /* deny direct call from web browser */ if (isset($_SERVER['REMOTE_ADDR'])) die('Permission denied.'); /* constants */ define('CMD', 1); /* manually set the URI path based on command line arguments... */ unset($argv[0]); /* except the first one */ $_SERVER['QUERY_STRING'] = $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = '/' . implode('/', $argv) . '/'; с #!/usr/local/bin/php <?php /* override normal limitations */ set_time_limit(0); ini_set('memory_limit', '256M'); /* deny direct call from web browser */ if (isset($_SERVER['REMOTE_ADDR'])) die('Permission denied.'); /* constants */ define('CMD', 1); /* manually set the URI path based on command line arguments... */ unset($argv[0]); /* except the first one */ $_SERVER['QUERY_STRING'] = $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = '/' . implode('/', $argv) . '/'; 

3-й: выполните свою работу cron следующим образом:

 /usr/bin/php /var/www/website/public_html/cli.php controller method 

где /var/www/website/public_html/ – домашний каталог вашего сервера, расположение вашего index.php и cli.php .

заметки:

для CI 3.0 вы найдете здесь необходимую информацию

базы данных: вам нужно предоставить свои настройки конфигурации db в вашем методе контроллера, поскольку задание cron просто выполняет метод контроллера. Поэтому он ничего не знает о настройках базы данных!

 $config['hostname'] = "localhost"; $config['username'] = "username_admin"; $config['password'] = "password"; //etc.. $this->db = $this->load->database($config, TRUE); 

debug: просто добавьте ссылку в свой html, чтобы запустить свой метод контроллера, например: index.php/controller/method (удалите это, как только вы нажмете сайт)

источник: очень полезно

Я думаю, что это самый простой способ заставить codeigniter работать при работе cron,

Вы можете использовать curl в заданиях cron для выполнения или запуска codeigniter в cron jobs. Пример:

 * * * * * /usr/bin/curl https://www.domain.com/controller/function 

вы также можете запускать cron-файл с терминала без cli.php .it не является обязательным файлом.

Я запускаю cron с моего сервера, используя следующий синтаксис: /usr/bin/php /var/www/project1/index.php controllerName methodName >> /var/log/project1/logFile.txt