Отсутствует модель в возвращаемых результатах CakePHP 2.1 на новом сервере

Наш сайт отлично работал на старом сервере, но недавно мы перенесли его на новый сервер, и сразу же все на сайте выглядело испорченным (т.е. не может найти данные, которые он ищет в представлениях).

При дальнейшем расследовании то, что ранее было возвращено следующим образом:

$articles[0]['Article']['title']

Сейчас возвращается:

$articles[0][0]['title']

Сначала нам сказали, что PDO не был установлен (или был поврежден или что-то в этом роде), но мы снова и снова пересобирали Apache с PDO, и он показывает PDO как для PHP, так и для MySQL.

Я пробовал искать, но либо я ищу не то, либо там нет хорошей информации. Любые идеи, что может быть причиной этого и / или как мы можем это исправить?


Изменить:

Он также работал на этом сервере до обновления, которое обновило его до 5.3 (не знаю, какая была предыдущая версия).

Изменить 2

По предложению я изменил источник данных на HpMysql. Это заставляет его работать. Однако это не отвечает на мой вопрос, поскольку я рассматриваю это как временное исправление - я все же хотел бы знать, в чем проблема и как ее исправить, не используя этот обходной путь.


person Dave    schedule 10.04.2012    source источник
comment
Вы пытались показать все ошибки? (отладка=2, обработчик ошибок 'level' => E_ALL )? Может быть, с помощью ошибок и дампа SQL вы сможете точно определить, где начинается неразбериха.   -  person Costa    schedule 11.04.2012
comment
Да - Отладка 2 - Нет ошибок, кроме неправильного индекса в массивах - данные возвращаются нормально (кроме неправильного форматирования), поэтому запросы в порядке.   -  person Dave    schedule 11.04.2012
comment
Проверьте переменную $name на своих моделях. По какой-то причине он может не заполняться автоматически. (Это проблема PHP 4, поэтому у вас не должно быть проблем с 5, но стоит проверить. Может быть, у вас был кеш старой модели от 4?)   -  person jeremyharris    schedule 11.04.2012
comment
Мы всегда использовали PHP 5+ для этого сайта. Кроме того, я добавил названия моделей, и все та же проблема :(   -  person Dave    schedule 11.04.2012
comment
у меня такая же проблема, какие обновления?   -  person Alejo JM    schedule 20.06.2012
comment
Алехо - я не верю, что когда-либо находил лучший способ / исправление. :(   -  person Dave    schedule 20.06.2012
comment
Привет, Дэйв, я только что нашел ответ и с версией mysql ... когда версия mysql была 5.1.63-cll (отсутствует имя модели в массивах), поэтому я меняю версию mysql для этого сообщества 5.0.95 и все работает отлично ... :-)   -  person Alejo JM    schedule 22.06.2012


Ответы (1)


Ответ автора оригинального постера (меня):

По словам нашего специалиста по серверу, «Есть два способа загрузить PDO. Первый — использовать easyapache для установки расширения PDO php. Второй — установить PDO через PECL. Похоже, что рассматриваемые модули разные».

Судя по всему, на этом сервере был установлен PECL вместо обычного PDO easyapache. Когда он удалил это и перезапустил/сбросил его с PDO easyapache, все заработало отлично.

Итак, похоже, что CakePHP требует «нормального» PDO.

Тайна разгадана.

Если вместо этого у вас есть PECL, вы можете использовать этот обходной путь:

Создайте файл «HpMysql.php» в папке источника данных и добавьте этот код/класс: https://github.com/lorenzo/HipHop/blob/master/Model/Datasource/Database/HpMysql.php

Измените источник данных database.php на «HpMysql».


Другая проблема: (оказался тот же ответ):

$this-› Auth-›login() создает правильный запрос, который возвращает 1 строку, но не проходит проверку ЕСЛИ (специфическая проблема сервера)

person Dave    schedule 17.07.2012