在新的主机上部署网站遇到的问题

来源:互联网 发布:汇通天下g7怎么样知乎 编辑:程序博客网 时间:2024/05/01 21:43

网站的开发进入到了后期的部署阶段,需要将之前编写的web项目部署到服务器上,初步实现应用。在此看似简单的过程中却遇到了许多新的问题。在此列举开来,是积累,也是提醒。

1. 页面加载十分缓慢(本身网页并不庞大)

通过检查network状态(F12),发现网页的请求过程中的大部分时间停留在其中两个文件上,如下图:
这里写图片描述
查看了项目内的某个的CSS文件发现如下代码:

@import url(http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,300italic,400italic,600italic);@import url(http://fonts.googleapis.com/css?family=Kaushan+Script);

意思是导入指定url地址处的css文件,也就是说在每次调用此文件时会在线的下载该文件。在此可见导入的为google的API,介于google在国内的悲惨处境,也就不难得知为何总卡在这里。
解决方法就是使用本地文件代替,尽量少的使用在线的资源。

2. 登录功能失效,页面无返回值,报告500错误

在login.php文件中使用ldap_connect通过AD域服务器验证登录。

$ldapconn = ldap_connect($host, $port)          or die("Could not connect to $ldaphost");

尝试查看apache的日志文件,未发现有关php的错误信息。
尝试在该语句前后添加echo语句,结果是只有该语句之前的信息能正常返回,并出现了下列错误信息:

Fatal error: Call to undefined function: ldap_connect() in D:….

问题的原因是在新的主机上并未启用php_ldap模块,函数无法识别。解决方法:

  1. 需要修改配置文件php.ini,将extension中的php_ladp.dll的“;”去掉了。当然首先要保证本地的php文件夹中包含php_ladp.dll文件(路径:php/ext/php_ldap.dll),否则需要去下载相匹配的文件。配置完成后重启apache,查看phpinfo(),出现ldap模块则表示加载成功。
    若问题仍未解决,继续下一步。
  2. 加载ldap扩展还依赖一个dll文件,那就是 libsasl.dll,如果你使用的是wampserver的话,系统加载的是apache目录的bin(php.ini也在这个目录里面的),那么需要从php目录里把这个文件复制到apache/bin里面然后重启 apache。
    若问题仍未解决,继续下一步。
  3. (该方法是在网上查询到的,当时并没有解决我的问题。)查看php手册的LXXV. LDAP Functions介绍,看到还有两个依赖库libeay32.dll and ssleay32.dll需要放到环境变量path里,由于这两个文件在php目录下,而且安装php时path已包含该路径,所以不需要设置,反之,就要放到windows能找到的目录了,比如win2000,就要复制到system32文件夹下。
    若问题仍未解决,。。。。 请联系我一起再努力。

3.Bootstrap datetimepicker插件突遇bug

Bootstrap datetimepicker是Bootstrap上的一个用于日期时间选择的一个精美的插件,之前使用的非常顺利,却不知为什么突然出现了Bug:插件自带的设置功能失效,即下面的代码没有按预定产生效果:

//datetimepicker部件的设置 $('.form_date').datetimepicker({    weekStart: 1,    todayBtn:  1,    autoclose: 1,    todayHighlight: 1,    startView: 2,    minView: 2,    forceParse: 0});

当时只是顺手拿来用,对插件的内部完全不了解,一时间也没有什么好的解决方法,只好逐一排查。
发现与插件提供的一个事件方法有关:

//该方法用于监听事件选择器,当日期改变时触发事件$("#starttime").datetimepicker().on('changeDate', function (ev) {    ++startDateChange;    if (startDateChange != 0 && endDateChange != 0){        showLeaveNoteTip();    }})$("#endtime").datetimepicker().on('changeDate', function (ev) {    ++endDateChange;    if (startDateChange != 0 && endDateChange != 0){        showLeaveNoteTip();    }})

若删去此代码,则设置代码生效。
最后找到了问题所在:
设置代码须在事件代码之前,否则就会出现这种问题。将js文件中的代码段顺序弄好,问题迎刃而解。
这个问题险些弄疯了我,调试了半天都不知道哪出了问题。只得用排除法逐一对照,消耗了大量的时间和精力,看来以后工具要慎用,用的时候多点细心和耐心。

0 0
原创粉丝点击