我最近将PHP从版本5.3.27升级到了5.5.0。
在我的Symfony2.3.2项目中一切都运行良好,我可以享受最新的PHP功能。
现在当我回到我的其他Symfony1.4.16项目时,我会收到一个关于preg_replace具有/e修饰符已被弃用的PHP错误。
我在论坛上找不到关于这个错误的参考:有人之前遇到过这个问题吗?有没有任何可以直接应用的补丁?升级到Symfony 1.4.20是否会解决此问题?
错误消息如下所示:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /myproject/lib/vendor/symfony/lib/response/sfWebResponse.class.php on line 409
一个方法是按照手册和信息建议修改代码。 我该如何将我的preg_replace表达式更改为preg_replace_callback调用?
任何帮助/提示都将非常欢迎。
编辑:
截至目前,这个问题还没有补丁(Symfony 1.4.20也没有解决这个问题)。解决方法是在源代码中将失败的preg_replace调用替换为相应的preg_replace_callback调用,在sfWebResponse类中很容易实现(感谢Jon的提示)。现在下一个失败的事件稍微复杂一些,不幸的是……另一方面,我们可能需要使用/e选项来搜索preg_replace使用情况,以找出Symfony可能会出问题的地方。这会得到相当多的结果:o 因此......我的结论是,直到出现一些严重的补丁之前,Symfony 1.4用户最好不要升级PHP到5.5版本。你认为呢?有别的选择吗?
现在当我回到我的其他Symfony1.4.16项目时,我会收到一个关于preg_replace具有/e修饰符已被弃用的PHP错误。
我在论坛上找不到关于这个错误的参考:有人之前遇到过这个问题吗?有没有任何可以直接应用的补丁?升级到Symfony 1.4.20是否会解决此问题?
错误消息如下所示:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /myproject/lib/vendor/symfony/lib/response/sfWebResponse.class.php on line 409
一个方法是按照手册和信息建议修改代码。 我该如何将我的preg_replace表达式更改为preg_replace_callback调用?
任何帮助/提示都将非常欢迎。
编辑:
截至目前,这个问题还没有补丁(Symfony 1.4.20也没有解决这个问题)。解决方法是在源代码中将失败的preg_replace调用替换为相应的preg_replace_callback调用,在sfWebResponse类中很容易实现(感谢Jon的提示)。现在下一个失败的事件稍微复杂一些,不幸的是……另一方面,我们可能需要使用/e选项来搜索preg_replace使用情况,以找出Symfony可能会出问题的地方。这会得到相当多的结果:o 因此......我的结论是,直到出现一些严重的补丁之前,Symfony 1.4用户最好不要升级PHP到5.5版本。你认为呢?有别的选择吗?