Недопустимые символы 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)));