在Yii框架中自定义runtimePath

时间:2013-04-10 01:16:33

标签: php yii

我正在使用Yii框架作为网络应用。我将运行时文件夹移出受保护的文件夹,并将其放在与index.php文件相同的级别。现在在主配置文件main.php中我添加了:

'runtimePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'runtime',

正好在正确设置的basePath下面:

'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',

我确保运行时文件夹是可写的。我正在使用Godaddy和Windows IIS7服务器。这是我得到的错误:应用程序运行时路径“D:\ Hosting \ 9434915 \ html \ yii \ picbridge \ protected \ config .. \ runtime”无效。请确保它是Web服务器进程可写的目录。

我知道它指向错误的文件夹但是如何让它指向正确的文件夹?我对runtimePath使用了与basePath相同的文件路径约定。

3 个答案:

答案 0 :(得分:2)

..后你缺少斜线 请注意错误消息中的路径,它是文件夹config..,然后是斜杠:
d:\主机\ 9434915 \ HTML \警予\ picbridge \保护\ CONFIG .. \运行
应该是:
d:\主机\ 9434915 \ HTML \警予\ picbridge \保护\ CONFIG \.. \运行
这里有什么奇怪的,就是你DIRECTORY_SEPARATOR之后dirname(__FILE__),而应该产生正确的路径。

提示: No need for DIRECTORY_SEPARATOR,只需使用/即可在任何窗口上正常运行,这对于解析文件系统中的路径非常有用。

提示2:感谢 Eirik Hoem 评论,您应该严格地将受保护的文件与公共文件分开。我个人使用folowwing布局:

/app/protected/
/app/www/
/framework/

答案 1 :(得分:1)

你不应该把它放在index.php级别,把它留在受保护的文件夹中。

并在受保护的文件夹中,将.htaccessdeny from all一起使用,以防止直接访问非传统mvc style php code的{​​{1}}。

检查application base directory了解详情

答案 2 :(得分:0)

我找到了解决我的问题的解决方案,我从Windows托管计划切换到了Linux。我切换后,我使用FileZilla设置文件夹权限,错误消失了。我认为问题与用户在Godaddy Windows共享主机方案中设置文件夹权限的能力有限有关。用户只能使用Godaddy的FTP文件管理器设置权限,他们无法像在Linux共享主机方案中那样使用FileZilla设置权限。