Запуск Codeigniter через CLI выводит корень веб-сайта вместо ожидаемого результата

Я в этом уроке при запуске Codeigniter через CLI. Я сделал все, что они сделали (скопировать и вставить) теперь, когда я запускаю эту команду, она не делает то, что ожидается, кроме как выводит содержимое индекса веб-сайта.

$ cd /Users/MyUsername/Sites/code
$ php index.php tools message

вывод, который я получаю, - это источник HTML индексной страницы, например http://localhost/code.

ожидаемый результат должен быть

Hello World!

как я могу добиться этого, чтобы заставить его работать?

6 ответов


попробуйте это:

php index.php/controller/function/param1/param2/param3 etc

или

php index.php controller function param1 param2 param3 etc

кроме того, опубликуйте содержимое вашего $_SERVER var и значение переменной 'uri_protocol' из config.РНР.

$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, но это запасной вариант.

вот что я создал, который работал в течение нескольких месяцев без проблем:

  1. создать каталог на вашем сервере, что вы можете просто использовать как блокнот для временных файлов, созданных с помощью wget. Я создал папку с именем cron на один уровень ниже моего .

    ex. /home/myuser/cron

  2. создайте команду cron. Вы можете связать вместе команды, использующие &&.

    i. cd /home/myuser/cron && -- перейдите в свой каталог царапин

    ii. wget http://www.site.com/cron/foo && -- wget ваш файл

    раздел III. rm -f foo -- удалите загруженный файл " foo " из каталога scratch

  3. ваша последняя команда будет выглядеть так:

    cd /home/myuser/cron && wget http://www.site.com/cron/foo && rm -f foo

  4. проверьте, что 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.


Ok извините, но здесь на этой страницеhttps://ellislab.com/codeigniter/user-guide/general/cli.html

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

перед этим установите PHP в переменные среды PATH {запустите php-файл в Windows CMD}

после установки пути переменные среды

  1. перейти к cmd
  2. cd путь, куда вы положили codeigniter (i.E CI/)
  3. индекс php.php / инструменты / сообщение

вы получаете

Hello World!

на экране cmd.