当您生成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
假设为默认值?
答案 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