windows服务器使用IIS时thinkphp搜索中文无效问题
发布:smiling 来源: PHP粉丝网 添加日期:2023-09-16 16:13:26 浏览: 评论:0
在用ThinkPHP开发的网站,在linux服务器下使用过一段时间,一切正常。但是更换到windows服务器时,发现搜索的时候,无法搜索中文,查不出相应的结果。查看数据库发现数据是存在的。linux服务器下正常,而且搜索数字或字母程序正常,说明程序是没有任何问题的。那么问题肯定就出在windows服务器上了。
控制器Search.php
在搜索控制器Search.php类中找到 lists 方法,使用下面代码调试程序
$param = input('param.');
dump($param);
exit;
注:笔者使用的是thinkphp5,版本thinkphp5以上都可以使用上述代码。
发现搜索关键词参数keywords,值为空。到底是哪一步的时候被屏蔽的呢,回忆一下thinkphp的底层工作原理。
thinkphp的底层工作原理
1. 根目录index.php运行
2. 在/thinkphp/start.php文件中,base.php加载配置(包括惯例配置文件)
3. App::run()->send();实现应用的启动。这个方法是整个框架的核心方法,简单一点说就是加载多个初始化文件、url路由转换、执行控制器方法
4. send()方法将程序执行结果返回给客户端
url路由检测处理有问题
初步猜测应该是url路由检测处理有问题,这个步骤会对参数进行分析处理。分析底层程序代码,app.php文件run方法中,调用Request.php的pathinfo方法来处理URL,使用$_SERVER['PATH_INFO']来获取参数。
iis环境解决方法
一般浏览器默认是gb2312,而我们的程序是UTF8的,所以用iconv()转换。加个iis环境判断,代码如下
- if(false!==stripos($_SERVER['SERVER_SOFTWARE'],'IIS')){
- $_SERVER['PATH_INFO']=iconv('gbk', 'utf-8//IGNORE', $_SERVER['PATH_INFO']);
- }
Tags: IIS搜索中文无效 thinkphp搜索中文无效
- 上一篇:thinkphp如何传递GET参数方法详解
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)