私の本番システムでは、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 によって生成されますよね? では、なぜパターンが異なるのでしょうか。
結局のところ、なぜうまくいかないのですか?誰か手がかりはありますか?