如上所述: http://codeigniter.com/user_guide/general/cli.html
像这样的页面: http://www.example.com/myController/myFunc/myParam
可以在命令行上运行:
php index.php myController myFunc myParam
我的codeignitor设置有一些文件夹来分组控制器,让我们这样说:
myFolder -> myPageController
-> myAdminController
所以,网址变为:
http://www.example.com/myFolder/myController/myFunc/myParam
如何在CLI上调用相同的东西? 类似的东西:
php index.php "myFolder/myController" myFunc myParam
似乎不起作用。
答案 0 :(得分:17)
您可以尝试:
php index.php myFolder myController myFunc myParam1 myParam2 ...
答案 1 :(得分:1)
注意,类文件中的索引方法对于在CLI中正常工作是必要的,否则codeigniter将返回404错误。
)
答案 2 :(得分:0)
对于 CodeIgniter 1.7 (如果某人不幸不得不支持旧版项目),有一个here提及的解决方案:
从命令行运行CodeIgniter
目标
就像标题中所说的那样,我们的目标是能够从命令行运行CodeIgniter应用程序。这对于构建cron作业或运行更密集的操作是必需的,因此您没有Web脚本的资源限制,例如最长执行时间。
上面的代码就像调用此URL:
http://www.example.com/hello/world/foo
黑客
在您的CodeIgniter文件夹的根目录下创建一个“ cli.php”文件:
if (isset($_SERVER['REMOTE_ADDR'])) {
die('Command Line Only!');
}
set_time_limit(0);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = $argv[1];
require dirname(__FILE__) . '/index.php';
如果您使用的是Linux环境,并且希望使该脚本可自行执行,则可以将其添加为cli.php的第一行:
#!/usr/bin/php
如果只希望特定的控制器仅是命令行,则可以在控制器构造函数中阻止Web调用:
class Hello extends Controller {
function __construct() {
if (isset($_SERVER['REMOTE_ADDR'])) {
die('Command Line Only!');
}
parent::Controller();
}
// ...
}
答案 3 :(得分:0)
这对我有用:
您应该位于index.php
所在的目录中,否则需要提供绝对路径。
php index.php ControllerName FuncName Param1 Param2 ...
将积分提供给@mlinuxgada上面的答案。就我而言,该文件夹名称不起作用,但将其删除对我而言是有效的。