Недавно я обновил 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
Одним из способов перехода может быть изменение кода, как рекомендовано в сообщении, и в manual. Как изменить выражение preg_replace на вызов preg_replace_callback?
Любая помощь/подсказка будет очень желанной.
EDIT:
К этой дате для этого нет патча (и Symfony 1.4.20 не решает проблему). Решение заключается в замене неудачных вызовов на preg_replace с соответствующим вызовом preg_replace_callback в sourche, что легко сделать в классе sfWebResponse (спасибо за подсказку Jon). Теперь следующее неудачное появление немного сложнее, к сожалению... И с другой стороны, нам, вероятно, придется использовать grep для использования preg_replace с помощью /e чтобы узнать, где Symfony может сломаться. Это дает немало результатов: o
Итак... Мое заключение состояло бы в том, что пользователям Symfony 1.4 лучше не обновлять PHP до версии 5.5 до тех пор, пока не появится какой-то серьезный патч. Как вы думаете? Любая альтернатива?