preg_quote が犯人だった

PHPのバージョンを上げたら、アプリが動かなくなった。
CodeIgniter1.7が使ってあったんだけど、

The URI you submitted has disallowed characters.

というメッセージが出てどうにもならず、
いっしょうけんめいApachePHPの設定を調べてたんですが 原因はCodeIgniterの方でした…。


というか PHPの preg_quote関数。
PHP5.3.0からしれっと仕様変更されてて、それが引っかかってた。
「- 文字がクォートされるようになりました。」

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

という変数で - 文字をクォートすると、そりゃ たいていのURIは disallowedになっちゃうよ。
2時間返せw