Перенос приложения CakePHP 1.3.2 на новый сервер

У меня есть очень старое приложение 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]

Любые предложения о том, как действовать дальше, чтобы сузить ошибку до чего-то более конкретного?


person mmvsbg    schedule 09.06.2015    source источник
comment
Вы пробовали искать OLD_DOMAIN_NAME в файлах приложения? Похоже, где-то в вашем коде есть ссылка на него, и вам нужно его изменить.   -  person drmonkeyninja    schedule 09.06.2015
comment
Файлы на новом сервере все еще находятся в папке OLD_DOMAIN_NAME, поэтому путь существует, и файлы все еще там. Хотя поищу, может еще что всплывет.   -  person mmvsbg    schedule 09.06.2015


Ответы (2)


Ваша первая ошибка заключается в том, что /home/SOME_NAME/public_html/OLD_DOMAIN_NAME/tmp/cache/ недоступна для записи. Убедитесь, что tmp имеет правильные права доступа к файлам; он должен быть доступен для записи пользователем веб-сервера.

В противном случае ваша проблема заключается в том, что конфигурация базы данных неверна, поэтому приложение не может подключиться к базе данных. Проверьте app/config/database.php и убедитесь, что база данных настроена правильно, и убедитесь, что bootstrap.php не изменяет соединение (возможно, это зависит от сервера, на котором установлено приложение).

Вы можете проверить, какие настройки базы данных используются в вашем коде, используя:

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

Проверьте это рядом с одной из ваших ошибок.

Если вы можете прояснить эти две проблемы, вы должны быть в порядке.

person drmonkeyninja    schedule 09.06.2015
comment
Первый уже очищен, спасибо. Что касается проблемы с базой данных, похоже, она настроена правильно, и я не вижу в bootstrap.php ничего, что могло бы изменить соединение. Любые идеи, как проверить, что он работает по назначению? - person mmvsbg; 09.06.2015
comment
Хм, возможно, это не имеет значения, но у меня есть следующие две строки в webroot/index.php: $Dispatcher = new Dispatcher(); $Dispatcher-›dispatch(); Ошибка, которую я получаю, генерируется после вызова dispatch(). - person mmvsbg; 09.06.2015
comment
Код Dispatcher в порядке, так как он взят из самого Cake (github. com/cakephp/cakephp/blob/1.3/app/webroot/index.php). Я обновил свой ответ предложением проверить, какие настройки базы данных используются. Все еще подозреваю, что это является причиной вашей проблемы. - person drmonkeyninja; 09.06.2015
comment
Это имеет смысл, но то, что я получил от Configure::read(...); по вашему предложению было просто «по умолчанию». Я думаю, это, по крайней мере, выбивает бутстрап из картины. Я где-то читал, что это может быть вызвано отсутствием модели, поэтому есть ли способ проверить, что именно вызывает проблему, в более подробном сообщении об ошибке? Я проверил маршруты и используемый там контроллер/модель/представление, похоже, в порядке... - person mmvsbg; 09.06.2015
comment
Журналы ошибок Cake действительно должны сообщать вам об отсутствии моделей (tmp/logs/error.log). Ваша проблема возникает из-за этой строки кода $cols = $this->query('SHOW FULL COLUMNS FROM ' . $this->fullTableName($model)); (github.com/cakephp/cakephp/blob/1.3/cake/libs/model/datasources/), возможно, стоит проверить, что такое сгенерированный запрос и выполняется ли он в вашей базе данных ( обычно не рекомендуют взламывать основной код, но это может быть самый быстрый способ получить ответ). - person drmonkeyninja; 09.06.2015
comment
Итак, в конце концов выясняется, что в базе данных отсутствовало несколько таблиц, и теперь, когда они были добавлены, она, похоже, работает. Что меня раздражает выше точки кипения, так это то, что не было понятного человеку легкого для понимания сообщения, указывающего на это. Я имею в виду, да ладно, это должно быть одной из первых ошибок, о которых можно подумать, и это не покрывается фреймворком? В любом случае, большое спасибо за ваше время и самоотверженность, пометив это как правильное, поскольку это действительно была база данных, и проголосовавший. Спасибо! - person mmvsbg; 11.06.2015
comment
Да, это действительно старая версия, но, к сожалению, у меня не было выбора, когда клиент решил откопать устаревший проект, чтобы запустить его снова. Спасибо еще раз и удачи! - person mmvsbg; 11.06.2015

У вас есть ваша работа вырезана для вас. Для начала я бы создал phpinfo, чтобы увидеть различия в конфигурации между старым и новым серверами.

<?php

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

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

?>   

информация о php

person Mike Stratton    schedule 09.06.2015
comment
У меня нет доступа к старому серверу. Сайт был на нем больше года назад, а сейчас его уже давно нет. - person mmvsbg; 09.06.2015
comment
Я настоятельно рекомендую вам разрабатывать сайт локально или в непроизводственной среде. Я бы все равно запустил phpinfo на текущем сервере. Я бы также изменил/добавил следующие настройки в ваш файл php.ini: ini_set('display_errors',1); ini_set('display_startup_errors',1); сообщение об ошибке (-1); - person Mike Stratton; 09.06.2015
comment
Кроме того, настроен ли кейквок на вашем текущем хосте? Поддерживает ли ваш текущий хост использование Cakewalk? - person Mike Stratton; 09.06.2015