【发布时间】:2012-07-23 19:06:28
【问题描述】:
在我的生产系统上,我在 symfony 路由器中遇到错误:
警告:preg_match() [function.preg-match]:编译 失败:偏移 60 处的括号不匹配 /mypath/app/cache/prod/appprodUrlMatcher.php 第 205 行
而在本地机器和另一台服务器上它工作正常。
我在缓存中挖掘,路线的模式不同:
在我的开发服务器上工作:
#^/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 生成的,对吧?那么,为什么模式不同呢?
毕竟为什么它不起作用?有人知道吗?
【问题讨论】:
标签: symfony