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 路径抛出错误的主要内容,如果未能解决你的问题,请参考以下文章