Недопустимые символы UTF8 после установки Opcache на сервер AWS EB PHP

Я использую CakePHP 2.4.2 для запуска сайта CMS на серверах Amazon Elastic Beanstalk с базой данных RDS. Начиная с прошлой ночи, я вижу ошибки в моих журналах, и некоторые страницы не загружаются (ошибка 500) из-за этого:

error: [PDOException] SQLSTATE[HY000]: General error: 1300 Invalid utf8 character string: '\x88\xB7'

Иногда я вижу один и тот же набор символов "utf8", но в журналах ошибок появляется множество разных строк, поэтому это одна и та же ошибка, но не одна и та же неверная строка каждый раз. Вот некоторые из других строк, которые у меня есть в моих журналах:

'\x88\xB7'
'\x88W'
'H\x85'
'\xB0\\x91\x84{\x7F'
'\xC0\x9C'
'\xE8V'
'\xD8\x0E'
'\xA4'

Перед уходом с работы прошлой ночью я запустил конфигурацию ebextension для установки кэширования Zend Opcode на серверы. У меня нет доказательств того, что это является источником ошибок, но, похоже, это единственное изменение, которое я внес на сервер, которое могло вызвать ошибки, - и это было последнее изменение, сделанное до того, как они начали появляться. Я вставил код около 5 вечера и начал видеть ошибки в журналах около 6 вечера.

Для хорошего примера, вот конфигурация, которую я использовал для включения opcache:

packages:
  yum:
    php55-opcache: []

У меня есть несколько серверов в работе, без пакета opcache, с одинаковыми настройками, которые работают нормально, и я не смог воспроизвести такие ошибки на моем локальном тестовом компьютере.

Мог ли я найти какую-то неясную ошибку с opcache или есть более логичное заключение для того, что я вижу? Так как эти ошибки происходят глубоко в моем коде, я немного растерялся из-за того, как я могу даже отладить его. Я искал в своем коде, чтобы убедиться, что в самом коде нет плохих символов, но кроме этого я как бы ковыряюсь в темноте.

ОБНОВИТЬ:

Я выяснил, вызвано ли это неправильным преобразованием strtolower() для строки UTF8, но один из задействованных запросов не содержит введенных пользователем значений, и ни одно из условий не использует строку UTF8, поэтому я не верю, что это может быть отслеженным к этому. Один из запросов, который не выполняется, - поиск по всем регионам, доступным в моем контроллере входа:

$regions = $this->Region->find('all', array('conditions' => array('do_not_display' => 0, 'active' => 1)));

0 ответов

Другие вопросы по тегам