Запуск 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
, но это запасной вариант.
вот что я создал, который работал в течение нескольких месяцев без проблем:
-
создать каталог на вашем сервере, что вы можете просто использовать как блокнот для временных файлов, созданных с помощью wget. Я создал папку с именем
cron
на один уровень ниже моего .ex.
/home/myuser/cron
-
создайте команду cron. Вы можете связать вместе команды, использующие
&&
.i.
cd /home/myuser/cron &&
-- перейдите в свой каталог царапинii.
wget http://www.site.com/cron/foo &&
-- wget ваш файлраздел III.
rm -f foo
-- удалите загруженный файл " foo " из каталога scratch -
ваша последняя команда будет выглядеть так:
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.
Ok извините, но здесь на этой страницеhttps://ellislab.com/codeigniter/user-guide/general/cli.html
они не упомянули, является ли корневой путь к папке, где мы размещаем codeigniter или папку контроллеров. Я много искал по этому вопросу. Я пробовал разные вещи, а потом нашел это.
перед этим установите PHP в переменные среды PATH {запустите php-файл в Windows CMD}
после установки пути переменные среды
- перейти к cmd
- cd путь, куда вы положили codeigniter (i.E CI/)
- индекс php.php / инструменты / сообщение
вы получаете
Hello World!
на экране cmd.