当前位置:首页 > CMS教程 > Thinkphp > 列表

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环境判断,代码如下

  1. if(false!==stripos($_SERVER['SERVER_SOFTWARE'],'IIS')){ 
  2.     $_SERVER['PATH_INFO']=iconv('gbk''utf-8//IGNORE'$_SERVER['PATH_INFO']); 
  3. }

Tags: IIS搜索中文无效 thinkphp搜索中文无效

分享到: