我应该在哪里放置我的应用程序的yiic文件来执行控制台命令?

时间:2014-07-04 08:48:34

标签: yii console-application

当您生成Yii 1.x自动生成的应用程序时,应用程序的私有yiic会被放置在protected文件夹中。但是,当我使用它执行yiic help shell时,我会看到以下消息:

It is recommended that you execute this command under
the directory that contains the entry script file of
the Web application.

然后:

* entry-script | config-file: optional, the path to
the entry script file or the configuration file for
the Web application. If not given, it is assumed to be
the 'index.php' file under the current directory.

我错过了什么? protected文件夹不是与条目脚本相同的文件夹(index.php)。我是否应该将yiic移到那里以执行控制台命令?

如果是,那么为什么yiic默认放置protected文件夹,而不是那里,输入脚本在哪里?

如果没有,那么为什么yiic会假设index.php存在于与yiic本身相同的文件夹中,为什么每次使用entry-script都需要更改此内容旗?这没有任何意义!

我认为,答案是将yiic保留在protected文件夹中,该文件夹受.htaccess文件的网络访问保护。条目脚本的文件夹不以这种方式受到保护,并且可以通过Web访问。我个人非常担心将yiic移动到根文件夹,其中index.php文件存在。如果这是正确的答案,那么上面引用的这个令人困惑的信息的目的是什么?

This answer似乎支持了我的想法,因为它显示CRON调用应该指向放置在yiic文件夹中的protected,而不是指向根文件夹中的那个。

为什么Yii开发人员将yiic置于不应该的位置(它在同一文件夹中查找index.php,因此在默认的自动生成的应用程序中,它会失败,而不是找到它)?我应该如何理解这种情况?为什么我每次都被迫使用额外的旗帜?为什么默认文件夹结构和文件放置不会复制,yiic假设为默认值?

1 个答案:

答案 0 :(得分:2)

帮助消息的含义是您应该从WebRoot文件夹(index.php所在的位置)执行yiic命令,如下所示:

% cd WebRoot
% YiiRoot/framework/yiic shell

所以yii会自动执行你的index.php文件来做它的事情...... 但是如果你想调用另一个像index-test.php这样的文件来执行yii而不是默认的index.php,你可以:

% cd WebRoot
% YiiRoot/framework/yiic shell index-test.php

http://www.yiiframework.com/doc/guide/1.1/en/topics.console