Intereting Posts

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

Я следую этому руководству по запуску 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 , но это резерв.

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

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

    ех. /home/myuser/cron

  2. Постройте свою команду cron. Вы можете объединить команды с помощью && .

    я. cd /home/myuser/cron && – перейдите в каталог с нуля

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

    III. rm -f foo – Удалить загруженный файл «foo» из вашего каталога с нуля

  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.

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

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

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

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

  1. перейдите в cmd
  2. cd путь, на который вы помещаете codeigniter (т.е. CI /)
  3. php index.php / tools / message

ты получишь

 Hello World! 

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