Подтвердить что ты не робот

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

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

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

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

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

Hello World!

Как я могу добиться этого, чтобы он работал?

4b9b3361

Ответ 1

попробуйте следующее:

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'

Ответ 2

Для меня это было разрешено путем изменения:

$config['uri_protocol'] = 'AUTO' 

в главном файле конфигурации.

Я ранее менял его на

'REQUEST_URI'

который не работает с CLI, видимо.

Ответ 3

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

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

Ответ 5

Я знаю, что этот вопрос старый и уже был дан ответ, но для меня и для других выбранный ответ не работает. То, что я нашел для работы, просто использует wget. Прежде чем опустить меня, потому что вы ищете что-то, что не позволяет внешним посетителям, выслушайте меня!

Если вы используете wget в сочетании с $this->input->ip_address();, вы можете убедиться, что единственный доступ к вашему script - это ваш собственный веб-сервер. Это не так хорошо, как возможность локально вызывать файл с помощью 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.

Ответ 6

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

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

до этого установите PHP на переменные среды PATH {Запустить php файл в окнах CMD}

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

  • перейти к cmd
  • cd путь, в который вы помещаете codeigniter (i.e CI/)
  • php index.php/tools/message

вы получите

Hello World!

на вашем экране cmd.