通过CLI运行Codeigniter会输出网站根目录,而不是预期结果

o7jaxewo  于 2022-12-06  发布在  其他
关注(0)|答案(6)|浏览(124)

我在通过CLI运行Codeigniter时遵循了this tutorial。我已经完成了他们所做的一切 (复制和粘贴)。现在,当我运行此命令时,它除了输出网站索引内容外,没有执行预期的操作。

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

我得到的输出是索引页HTML源代码,例如http://localhost/code
预期结果应为

Hello World!

我如何才能做到这一点,使它的工作?

w1jd8yoj

w1jd8yoj1#

试试这个:

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

php index.php controller function param1 param2 param3 etc

另外,从config.php发布$_SERVER变量的内容和'uri_protocol'变量的值。
$config ['uri_protocol']应该是'自动'

hjqgdpho

hjqgdpho2#

对我来说,这是通过更改解决的:

$config['uri_protocol'] = 'AUTO'

在主配置文件中。
我之前已将其更改为

'REQUEST_URI'

显然它不能与CLI一起使用。

ut6juiuv

ut6juiuv3#

我得到的输出是索引页HTML源代码,例如http://localhost/code
您的路由出现了错误,新的示例CLI控制器没有被触发,而是触发了另一个控制器。* 您的路由出现了哪一个 * 错误很难说,因为您没有显示完整的代码。

gdx19jrr

gdx19jrr4#

如果你同时使用wget$this->input->ip_address();,你可以确保只有你自己的web服务器才能访问你的脚本,这不如使用php index.php controller function在本地调用文件好,但这是一个后备方案。
以下是我所创建的,已经工作了几个月没有问题:
1.在服务器上创建一个目录,作为wget创建的临时文件的暂存区。我在public_html文件夹的下一级创建了一个名为cron的文件夹。
例如/home/myuser/cron
1.构造cron命令。可以使用&&将命令串在一起。
i.cd /home/myuser/cron &&--移动到临时目录
ii. wget http://www.example.com/cron/foo &&-- wget您的文件
iii. rm -f foo--从临时目录中删除下载的文件“foo
1.您的最后一个命令看起来如下所示:
cd /home/myuser/cron && wget http://www.example.com/cron/foo && rm -f foo
1.检查访问cron文件的IP地址是否等于Web服务器的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暂存文件。

n3h0vuf2

n3h0vuf25#

这对我很有效-在http://www.daharveyjr.com/codeigniter-cli-command-line-interface/找到

$config['uri_protocol'] = 'CLI';

我就这样跑

php index.php controller/function/parameter
yjghlzjz

yjghlzjz6#

好吧,很抱歉,但在这一页https://ellislab.com/codeigniter/user-guide/general/cli.html
他们没有提到我们放置codeigniter的文件夹的根路径还是控制器文件夹的根路径。我在这个问题上搜索了很多。我尝试了不同的方法,然后我发现了这个问题。
在将PHP设置为PATH环境变量{Run php file in windows CMD}之前
设置PATH环境变量之后
1.转到cmd

  1. cd放置codeigniter的路径(即CI/)
  2. php文件索引.php/tools/message
    您将获得
Hello World!

到你的命令屏幕上。

相关问题