【问题标题】:CAKEPHP - Change default path to webrootCAKEPHP - 将默认路径更改为 webroot
【发布时间】:2012-03-18 03:56:17
【问题描述】:

我是 cakephp 新手,在设置本地开发服务器时遇到了一些问题。我的蛋糕安装在http://localhost/dropbox/my_site/。但是,当我尝试访问该 url 时,它告诉我 Dropbox 控制器未设置。如何告诉 CakePHP 从 my_site 而不是 /localhost/ 开始?

我尝试将connect(/localhost/dropbox/*) 添加到路线中,但它似乎仍在错误位置查找模型。

我尝试在 app/webroot 中编辑 index.php,但所有示例都显示了如何以 linux 格式而不是 windows 来编写目录,所以我不确定如何构建“ROOT”

【问题讨论】:

    标签: php cakephp installation


    【解决方案1】:

    CakePHP 可以在子目录中正常运行 - 我的开发机器上有几个 Cake 站点在 http://localhost/{appname} 运行。

    Cake 在根 index.php 文件中定义了它的 ROOT 目录。如果你往里面看,你会看到以下几行:

    define('ROOT', dirname(__FILE__));
    define('WEBROOT_DIR', 'webroot');
    define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS);
    

    由于它从dirname(__FILE__) 获取ROOT,所以它总是指向该文件的位置。

    我怀疑您的路由文件有问题。您是否创建了任何自定义路由规则来说明位于子目录中?如果您这样做了,您的 cake 安装可能会尝试访问 http://localhost/dropbox/my_site/dropbox/...,这就是您收到该错误的原因。

    【讨论】:

    • Router::connect('/', array('controller' => 'cars', 'action' => 'index'));这是我在路线中编辑的唯一内容。
    • @Stewie 当您直接导航到您的网站时收到此错误?还是仅在单击您网站上的链接后...?
    • 当我转到localhost/dropbox/my_site 时,它告诉我保管箱控制器不存在。 cakephp 安装在 my_site 文件夹中。 -第二个区分大小写当我转到localhost/Dropbox/My_Site 时,我得到:调用 C:\wamp\www\Dropbox\My_Site\app\Controller\CarsController.php 中非对象上的成员函数 find()第 10 行
    • 是的,就是这样。当我转到localhost/dropbox/my_site 时,它告诉我保管箱控制器不存在,但看起来,url 区分大小写。当我转到localhost/Dropbox/My_Site 时,我得到另一个错误,但这只是来自一些命名约定。我正在运行。谢谢!
    【解决方案2】:

    这与 CakePHP 的关系可能不如你的 Web 服务器那么大。

    如果 dropbox 是您的文档根目录,则应在您的 Web 服务器配置中相应地映射它。例如在 Apache 中使用 DocumentRoot

    【讨论】:

    • 我没有在我的 Web 服务器中为此开发站点设置单独的站点。也许这就是我做错了。我正在使用 wamp,我只是将我的 Dropbox 文件夹放在里面,我的应用程序文件夹放在我的 Dropbox 文件夹中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多