【问题标题】:Moving a CakePHP 1.3.2 Application to a New Server将 CakePHP 1.3.2 应用程序移至新服务器
【发布时间】:2015-06-09 07:23:19
【问题描述】:

我有一个非常旧的 CakePHP 1.3.2 应用程序,它曾经在给定域下的服务器上工作。我有原始文件,现在我正在尝试设置它并让它在不同域下的新服务器上运行。

起初我必须在 webroot/index.php 中修复以下行:

define('CAKE_CORE_INCLUDE_PATH', '/home/SOME_NAME/cakephp-1.3.2');

因为应用程序甚至找不到框架。它现在确实找到了,但我收到了 404 Page Not Found 错误。我完全不知道是什么原因造成的,我什至无法使用新的用户/密码/主机参数确定数据库连接是否成功。正在发生的事情的唯一迹象是我在服务器上找到的以下日志文​​件,每次我尝试通过浏览器访问应用程序时,它都会填充以下行:

2015-06-09 10:00:24 Warning: Warning (512): /home/SOME_NAME/public_html/OLD_DOMAIN_NAME/tmp/cache/ is not writable in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/cache/file.php, line 267]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): array_keys() expects parameter 1 to be array, boolean given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1936]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): array_keys() expects parameter 1 to be array, boolean given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1949]
2015-06-09 10:00:24 Warning: Warning (2): array_filter() expects parameter 1 to be array, null given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1953]
2015-06-09 10:00:24 Warning: Warning (2): array_values() expects parameter 1 to be array, null given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1953]
2015-06-09 10:00:24 Warning: Warning (2): array_unique() expects parameter 1 to be array, null given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 2045]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): array_keys() expects parameter 1 to be array, boolean given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1936]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): array_keys() expects parameter 1 to be array, boolean given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1949]
2015-06-09 10:00:24 Warning: Warning (2): array_filter() expects parameter 1 to be array, null given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1953]
2015-06-09 10:00:24 Warning: Warning (2): array_values() expects parameter 1 to be array, null given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1953]
2015-06-09 10:00:24 Warning: Warning (2): array_unique() expects parameter 1 to be array, null given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 2045]
2015-06-09 10:00:24 Warning: Warning (2): array_unique() expects parameter 1 to be array, null given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1229]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): implode() [<a href='function.implode'>function.implode</a>]: Invalid arguments passed in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1448]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): array_keys() expects parameter 1 to be array, boolean given in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo_source.php, line 1936]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]
2015-06-09 10:00:24 Warning: Warning (2): Invalid argument supplied for foreach() in [/home/SOME_NAME/cakephp-1.3.2/cake/libs/model/datasources/dbo/dbo_mysql.php, line 127]

关于如何从这里开始以将错误缩小到更具体的内容的任何建议?

【问题讨论】:

  • 您是否尝试在应用程序的文件中搜索OLD_DOMAIN_NAME?您的代码中似乎有对它的引用,您需要更改它。
  • 新服务器上的文件仍在文件夹 OLD_DOMAIN_NAME 中,因此路径存在并且文件仍然存在。不过我会搜索一下,看看还会弹出什么。

标签: php cakephp cakephp-1.3


【解决方案1】:

您的第一个错误是因为/home/SOME_NAME/public_html/OLD_DOMAIN_NAME/tmp/cache/ 不可写。确保tmp 具有正确的文件权限;它需要可由 Web 服务器用户写入。

否则您的问题似乎是数据库配置错误,因此应用无法连接到数据库。检查app/config/database.php 并确保数据库设置正确,并确保bootstrap.php 没有改变连接(可能取决于安装应用程序的服务器)。

您可以使用以下方法检查代码中使用了哪些数据库设置:-

Configure::read('Session.database');

在您的错误之一附近进行测试。

如果你能解决这两个问题,你应该很好。

【讨论】:

  • 第一个已经清零了,谢谢。至于数据库问题,它似乎设置正确,我在 bootstrap.php 中看不到任何会改变连接的内容。任何想法如何验证它是否按预期工作?
  • 嗯,可能无关紧要,但我在 webroot/index.php 中有以下两行: $Dispatcher = new Dispatcher(); $Dispatcher->dispatch();我得到的错误是在调用 dispatch() 之后生成的。
  • Dispatcher 代码可以,因为它来自 Cake 本身 (github.com/cakephp/cakephp/blob/1.3/app/webroot/index.php)。我更新了我的答案,建议检查哪些数据库设置正在使用中。仍然怀疑这是您的问题的原因。
  • 这确实有道理,但我从 Configure::read(...);根据您的建议只是“默认”。我想这至少会从图片中剔除引导程序。我在某处读到这可能是由于缺少模型造成的,所以有没有办法在更详细的错误消息中检查究竟是什么导致了问题?我检查了路线,那里使用的控制器/模型/视图似乎没问题...
  • Cake 的错误日志应该会告诉您模型是否丢失 (tmp/logs/error.log)。您的问题似乎来自这行代码 $cols = $this-&gt;query('SHOW FULL COLUMNS FROM ' . $this-&gt;fullTableName($model)); (github.com/cakephp/cakephp/blob/1.3/cake/libs/model/datasources/…) 可能值得检查正在生成的查询是什么以及它是否在您的数据库上运行(通常不建议破解核心代码,但可能是获得答案的最快方法)。
【解决方案2】:

您的工作已经完成。对于初学者,我会创建一个 phpinfo 来查看新旧服务器之间的配置差异。

<?php

// Show all information, defaults to INFO_ALL
phpinfo();

// Show just the module information.
// phpinfo(8) yields identical results.
phpinfo(INFO_MODULES);

?>   

phpinfo

【讨论】:

  • 我无法访问旧服务器。该网站在一年多前就已经上线,现在早已不复存在。
  • 我强烈建议您在本地或非生产环境中开发站点。我仍然会在当前服务器上运行 phpinfo。我还将在您的 php.ini 文件中更改/添加以下设置: ini_set('display_errors',1); ini_set('display_startup_errors',1); error_reporting(-1);
  • 另外,您是否在当前主机上配置了 cakewalk?您当前的主机是否支持使用 cakewalk?
猜你喜欢
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
相关资源
最近更新 更多