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\+\/]+" } }

古いPCREを使用すると同様のエラーが発生する可能性があるというgithubの問題を読みました。 https://github.com/symfony/symfony/issues/4093
私のものは十分に新しいようです: PHP 5.3.6 with PCRE Version 8.11.
私はソラリスにいます。

パターンは symfony によって生成されますよね? では、なぜパターンが異なるのでしょうか。
結局のところ、なぜうまくいかないのですか?誰か手がかりはありますか?

4

1 に答える 1