2012-07-23 27 views
1

在我的生产系统,我得到一个错误在symfony的路由器:编译失败:无与伦比的括号中appstageUrlMatcher.php

警告:的preg_match()[function.preg匹配]:编译 失败:括号不匹配在 /mypath/app/cache/prod/appprodUrlMatcher.php线205

而在本地机器上工作得很好另一台服务器上的偏移60。

我挖的缓存和路由的模式是不同的:

工作我的dev的服务器:

#^/hotels(?:/(?<groupId>[^/\\-]+)(?:\\-(?<groupName>[^\\-]+))?)?)?$#s 

的路线是:

#^/hotels/(?<groupId>[^/\\-]+)\\-(?<groupName>[^\\-]+)$#s 

生产不工作:

hotel: 
    pattern: /hotels/{groupId}-{groupName} 
    defaults: { _controller: "MyBundle:Hotel:hotel", requirements:{ groupName: "[a-zA-Z1-9\+\/]+" } } 

我在github上看到一些问题,使用旧的PCRE时可能出现类似的错误。 https://github.com/symfony/symfony/issues/4093
我看起来已经足够新:PHP 5.3.6与PCRE版本8.11。
我在Solaris上。

模式由symfony生成,对吧?那么,为什么这些模式不同?
毕竟为什么它不工作?有人有任何线索吗?

回答

0

这不是一个symfony问题,而是这台Solaris机器上PHP 5.3.6版本中的一个错误。
常量INF返回浮点数(0)这会导致路由爆炸。

查看更多这里:php INF has value zero