php 5.3.3
タイトルは自分の環境
CodeIgniter で作られたアプリケーションでバージョン5.3以下だと動いていたものが、自分の環境に入れてみたら動かなくてハマったのでメモ
問題
PHP5.3.3環境のアプリケーションURLを開こうとすると、エラー文が表示される
An Error Was Encountered
The URI you submitted has disallowed characters.
原因
- CodeIgniter のURIクラスでのクォート処理が悪さしてるらしい
189 if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str)) 190 { 191 header('HTTP/1.1 400 Bad Request'); 192 show_error('The URI you submitted has disallowed characters.'); 193 }
対策
preg_quote をハックして取り除く
189 if ( ! preg_match("|^[".($this->config->item('permitted_uri_chars'))."]+$|i", $str)) 190 { 191 header('HTTP/1.1 400 Bad Request'); 192 show_error('The URI you submitted has disallowed characters.'); 193 }
ちなみに、正規表現にマッチさせる文字列は $this->config->item('permitted_uri_chars')
- config/config.php
132 $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
URIに日本語を使いたい場合は、こうすればいいっぽい
今回は関係ないけど、一応メモ
132 $config['permitted_uri_chars'] = '一-龠ぁ-んァ-ヴーa-zA-Z0-9a-z 0-9~%.:_-';
で、やっと動いたと思ったらまたエラーでござる(:D)rz
問題
- css のデザインが反映されない
- リンクのURLがおかしい
原因
ソースを見てみると、ショートタグがそのまま載ってる
<?=base_url();?>