Я сталкиваюсь со странной ошибкой в CakePHP и не знаю, как выяснить, что происходит.
Я использую Ajax-запрос для загрузки динамических данных для dataTable, и он отлично работает на моем локальном хосте. По некоторым причинам я не могу заставить его работать на моем живом сервере, когда у меня есть больше чем несколько записей.
После отладки я обнаружил, что не работает функция поиска. Когда в моем массиве ответов больше нескольких записей, один из массивов (‘SollProject’) просто полностью пуст, и весь скрипт перестает работать.
Вот мой код:
$project = $this->Project->find("first", array('conditions'=>array('id'=>$project_id) ,
'contain' => array(
'SollProject' => array(
'conditions'=> array(
'SollProject.date >=' => $year.'-01-01',
'SollProject.date <=' => $year.'-12-31'
)
),
'HabenProject'=> array(
'conditions'=> array(
'HabenProject.date >=' => $year.'-01-01',
'HabenProject.date <=' => $year.'-12-31'
)
))));
Любая идея, что я делаю не так здесь или почему он не работает на живом сервере? Там нет метода afterFind, если вам интересно.
Возможно я должен упомянуть, что я уже пробовал отладку ошибок, и я не получаю никаких сообщений об ошибках. Я также попробовал тот же код SQL на моем сервере SQL, и он работает отлично. Также нет проблем с памятью, так как память, которую я использую, намного лучше той, которую я обычно использую, и это всего лишь ответ json.
Сама функция также работает для небольших записей (не более 5 записей), но как только у меня появляется немного больше записей в базе данных, она просто вылетает.
Интересно то, что я могу debug($project['HabenProject'])
и он показывает мне все HabenProject, но если я попробую debug($project['SollProject'])
или просто debug($project)
переменная просто пуста. Это даже не объявлено как массив. Там просто нет выхода. Остальная часть страницы все еще отображается.
Основные этапы отладки:
Тем не менее, я думаю, что это ограничение памяти и отладка отключена, поэтому, вероятно, вы получаете белую страницу. Проверьте использование памяти и увеличьте предел памяти php.
Хорошо, после многих отладок похоже, что я нашел проблему:
По какой-то причине каждая запись с Umlaut (äüö) в базе данных вызвала ошибку, из-за которой массив результатов функции find больше не работал.
Оказывается, проблема в том, что шифрование базы данных живого сервера utf-8 было закомментировано …