Недавно я обновил PHP с версии 5.3.27 до 5.5.0. В моем проекте Symfony 2.3.2 все работает нормально, и я могу пользоваться последними функциями PHP.
Теперь, когда я возвращаюсь к своему другому проекту Symfony 1.4.16, я получаю ошибку PHP о том, что preg_replace устарел с модификатором /e.
Я не могу найти упоминаний об этой ошибке на форумах: у кого-нибудь была эта проблема раньше? Есть ли какой-нибудь патч, который я мог бы применить из коробки? Обновление до Symfony 1.4.20 решит эту проблему?
Сообщение об ошибке выглядит следующим образом:
Устарело: preg_replace(): модификатор /e устарел, вместо этого используйте preg_replace_callback в /myproject/lib/vendor/symfony/lib/response/sfWebResponse.class.php в строке 409.
Одним из способов может быть изменение кода в соответствии с рекомендациями в сообщении и в руководство. Как я могу изменить свое выражение preg_replace на вызов preg_replace_callback?
Любая помощь/подсказка будет очень кстати.
РЕДАКТИРОВАТЬ:
На сегодняшний день для этого нет патча (и Symfony 1.4.20 не решает эту проблему). Решение состоит в том, чтобы заменить неудачные вызовы preg_replace соответствующим вызовом preg_replace_callback в источнике, что легко сделать в классе sfWebResponse (спасибо за подсказку, Джон). Теперь следующее возникновение ошибки немного больше. сложный, к сожалению... И, с другой стороны, нам, вероятно, пришлось бы grep использовать preg_replace с параметром /e, чтобы выяснить, где Symfony может сломаться. Что дает довольно много результатов: o
Итак... Мой вывод таков: пользователям Symfony 1.4 лучше не обновлять PHP до версии 5.5, пока не выйдет какой-нибудь серьезный патч. Что вы думаете ? Любая альтернатива?