Я следую этому руководству по запуску Codeigniter через CLI. Я выполнил все, что они сделали (скопировал и вставил) сейчас, когда я запускаю эту команду, она не делает то, что ожидается, за исключением того, что выводит содержимое индекса веб-сайта.
$ cd /Users/MyUsername/Sites/code $ php index.php tools message 
  Выход, который я получаю, является источником HTML-страницы индекса, например http://localhost/code . 
Ожидаемый результат должен быть
 Hello World! 
Как я могу добиться этого, чтобы он работал?
попробуй это:
 php index.php/controller/function/param1/param2/param3 etc 
или
 php index.php controller function param1 param2 param3 etc 
также опубликуйте содержимое своего $ _SERVER var и значение переменной uri_protocol из config.php.
$ config ['uri_protocol'] должен быть 'AUTO'
Для меня это было разрешено путем изменения :
 $config['uri_protocol'] = 'AUTO' 
в основном файле конфигурации.
Я ранее менял его на
 'REQUEST_URI' 
который , очевидно, не работает с CLI.
Выход, который я получаю, является источником HTML-страницы индекса, например
http://localhost/code.
У вас есть ошибка с вашей маршрутизацией, новый контроллер CLI не запускается, а другой контроллер. Какую ошибку у вас с вашей маршрутизацией трудно сказать, так как вы не указали весь свой код.
Это сработало для меня – найдено по адресу http://www.daharveyjr.com/codeigniter-cli-command-line-interface/
 $config['uri_protocol'] = 'CLI'; 
Затем я бегу так
 php index.php controller/function/parameter 
  Я знаю, что этот вопрос старый и уже был дан ответ, но для меня и для других выбранный ответ не работает.  То, что я нашел для работы, просто использует wget .  Перед тем, как опустить меня, потому что вы ищете что-то, что не позволяет внешним посетителям, выслушайте меня! 
  Если вы используете wget в сочетании с $this->input->ip_address();  вы можете убедиться, что единственный доступ к вашему скрипту – это ваш собственный веб-сервер.  Это не так хорошо, как возможность вызвать файл локально с помощью функции php index.php controller function , но это резерв. 
Вот что я создал, который проработал несколько месяцев без проблем:
  Создайте директорию где-нибудь на своем сервере, которую вы можете просто использовать в качестве блокнота для временных файлов, созданных wget.  Я создал папку под именем cron один уровень ниже моей папки public_html . 
  ех. /home/myuser/cron 
  Постройте свою команду cron.  Вы можете объединить команды с помощью && . 
  я.  cd /home/myuser/cron && – перейдите в каталог с нуля 
  II.  wget http://www.site.com/cron/foo && – wget ваш файл 
  III.  rm -f foo – Удалить загруженный файл «foo» из вашего каталога с нуля 
Ваша последняя команда будет выглядеть примерно так:
 cd /home/myuser/cron && wget http://www.site.com/cron/foo && rm -f foo 
Убедитесь, что IP-адрес, доступ к вашим файлам cron, равен IP-адресу вашего веб-сервера:
 <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Cron extends MY_Controller { public function __construct() { parent::__construct(); // this controller can only be called from the IP xxx.xxx.xxx.xxx if ($this->input->ip_address() !== 'xxx.xxx.xxx.xxx'){ show_error('Direct access is not allowed'); } } function foo($bar = 'bar') { echo $this->input->ip_address(); } } 
  Важно: убедитесь, что вы полностью понимаете эффекты rm -f .  Это может иметь интересные последствия, если вы не предоставите правильный файл.  Если у вас есть свободное время, вы можете отказаться от удаления файла и вручную вручную удалять все файлы cron scratch. 
Ок, простите, но здесь, на этой странице https://ellislab.com/codeigniter/user-guide/general/cli.html
Они не упомянули, есть ли корневой путь в папке, куда мы помещаем папку codeigniter или controllers. Я много искал по этой проблеме. Я пробовал разные вещи, а потом нашел это.
до этого установите PHP на переменные среды PATH { Запустите php-файл в Windows CMD }
после установки переменных среды PATH
ты получишь
 Hello World! 
на вашем экране cmd.