1

在我的生产系统上,symfony 路由器出现错误:

警告:preg_match() [function.preg-match]:编译失败:/mypath/app/cache/prod/appprodUrlMatcher.php 第 205 行中偏移 60 处的括号不匹配

而在本地机器和另一台服务器上它工作正常。

我在缓存中挖掘,路线的模式不同:

在我的开发服务器上工作:

#^/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 生成的,对吧?那么,为什么模式不同呢?
毕竟为什么它不起作用?有人有任何线索吗?

4

1 回答 1

0

这不是 symfony 问题,而是这台 Solaris 机器上 PHP 5.3.6 版本中的错误。
常量 INF 返回了float(0),这炸毁了路由。

在此处查看更多信息:php INF 的值为零

于 2012-07-26T15:44:43.340 回答