CakePHP 1.2 应用程序具有非常规的 Cake 路径抛出错误

Posted

技术标签:

【中文标题】CakePHP 1.2 应用程序具有非常规的 Cake 路径抛出错误【英文标题】:CakePHP 1.2 application with non-regular Cake path throwing errors 【发布时间】:2012-02-08 23:43:44 【问题描述】:

我在使用 Cakephp 网站时遇到了问题。我已将我的 app 目录放到 staging 文件夹中,因此它是实时站点的副本。所以结构看起来是这样的:

app
    config
    ...
    webroot
cake
    config
    ...
    tests
docs
staging
    app
        config
        ...
        webroot
    vendors
vendors

我已将 /staging/app/webroot/index.php 中的 CAKE_CORE_INCLUDE_PATH 常量设置为我的 cake 文件夹所在的根目录,并设置我的/staging/app/config/database.php中的数据库设置。

现在,虽然http://domain.com/staging/ 的网站似乎可以正常工作,但我的页面顶部出现以下错误:

警告 (2): mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) [CORE/cake/libs /model/datasources/dbo/dbo_mysql.php,第 117 行]

警告 (2):mysql_select_db():提供的参数不是有效的 MySQL-Link 资源 [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php,第 122 行]

警告 (2):mysql_get_server_info():提供的参数不是有效的 MySQL-Link 资源 [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php,第 130 行]

警告 (2):mysql_real_escape_string() 期望参数 2 是资源,给定布尔值 [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php,第 247 行]

警告 (2):mysql_query():提供的参数不是有效的 MySQL-Link 资源 [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php,第 152 行]

警告 (2):mysql_errno():提供的参数不是有效的 MySQL-Link 资源 [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php,第 329 行]

警告 (2): session_start() [function.session-start]: 无法发送会话缓存限制器 - 标头已发送(输出开始于 /users/ia/www.cantifix.co.uk/cake/basics.php :111) [CORE/cake/libs/session.php,第 535 行]

警告(2):无法修改标头信息 - 标头已由(输出开始于 /users/ia/www.cantifix.co.uk/cake/basics.php:111)[CORE/cake/libs/session .php,第 536 行]

发生了什么事?如前所述,我的数据库连接设置似乎是正确的,站点正常运行(除了这些错误消息)。

如果有人对使用单个 cake 库的多个应用程序有任何提示或指示,我将不胜感激。

【问题讨论】:

【参考方案1】:

我在同一个目录中使用了几十个“app”文件夹。 这一切都可以完美运行,无需任何配置开销

为什么要更改 CAKE_CORE_INCLUDE_PATH? 保持原样。 也将 ROOT 保留为动态默认值:

define('ROOT', dirname(dirname(dirname(__FILE__))));

蛋糕会自己处理一切。

另请注意: 您应该将 VirtualHost 设置为 webroot。示例设置: http://www.dereuromark.de/2011/05/29/working-with-domains-locally/

那么应该没有问题。

【讨论】:

我正在更改CAKE_CORE_INCLUDE_PATH,因为cake 库文件夹的位置不在通常的位置,而且我没有触及ROOT 常量。而且,它只是一个临时的集结区;它不需要自己的子域/虚拟主机。【参考方案2】:

我在 Cakephp 中也有很多项目,我需要做的就是克隆 app/ 并重命名它。我不需要更改 cake_core_include_path。我所需要的只是设置另一个 vhost 指向新目录的 webroot。

也许你复制了一个锁定文件?

Warning (2): mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through
socket '/var/run/mysqld/mysqld.sock' (2) [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php, line 117]

这似乎是触发所有其余错误的错误。其余的 mysql 错误是期待资源,但得到了一个错误的布尔值。标头错误很可能是由于错误输出引起的

【讨论】:

【参考方案3】:

已修复!原来这是我的 database.php 配置文件的问题。我将 $staging 数组中的值复制到 $default 数组中,并清除了 tmp 文件夹,然后在 Universe 中恢复了平衡。

【讨论】:

正如我所料 :) 我知道,缓存有时会成为魔鬼。但我仍然认为没有必要更改常量。您的设置/文件夹结构对我来说看起来很正常。就像我会做的那样。 不正常,因为 staging 文件夹没有核心 cake 文件夹的副本;我需要设置常量以使用父级的 cake 文件夹。

以上是关于CakePHP 1.2 应用程序具有非常规的 Cake 路径抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

具有两个模型会话的 Cakephp 身份验证组件

CAKEPHP 1.2/1.3 中的前缀路由和插件

具有不同表名和插件的 Cakephp 夹具

Acl-cakePHP 中组的通用权限

CakePHP 应用程序无法在 localhost 中启动

CakePHP中具有直接多态关联的MySQL错误