用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4654|回复: 3
收起左侧

php 5.3 正式版 跑CI里面的preg_quote

[复制链接]
发表于 2009-6-30 22:11:31 | 显示全部楼层 |阅读模式
从5.2.9升级到5.3.0
原因是5.3的mysql函数库接口使用了mysqlnd 直接访问数据库.
而不是通过libmysqld实现.理论上减少了副本存在于内存..也提高了存取效率...
刚升上来..就报The URI you submitted has disallowed characters.
找了下...原来preg_quote这个函数在5.2.9里面是不会对-进行转义的..所以CI默认的Config里面在-前面是有一个反斜线的...

看了下5.3的changelog
http://cn2.php.net/ChangeLog-5.php
PHP复制代码
//Fixed bug #47229 (preg_quote() should escape the '-' char). (Nuno)
复制代码


临时解决一下
/system/libraries/URI.php
189行
PHP复制代码
if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str))
复制代码

PHP复制代码
if ( ! preg_match("|^[".$this->config->item('permitted_uri_chars')."]+$|i", $str))
复制代码


去掉preg_quote函数转义..不然a-z 0-9就变成 a\-z 0\-9了...
在config.php里面把转义手工加进去..
需要转义的字符以下几个
. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
 楼主| 发表于 2009-6-30 22:13:48 | 显示全部楼层
原来官方web文档也加入了这个changelog~
http://cn2.php.net/manual/en/function.preg-quote.php
发表于 2009-6-30 22:44:54 | 显示全部楼层
呵呵,CI 对 PHP 5.3.0 支持的还不是很好呀!
不推荐在 CI 生产环境升级 PHP 呵呵
 楼主| 发表于 2009-6-30 22:53:18 | 显示全部楼层
简直就是糟糕.....回退到5.2.10算了.....5.3对wordpress的支持更糟糕...数据都取不出来 没眼看...

本版积分规则