drupal9升级安装模块时提示异常错误导致网站无法访问

  白龙网研究发现,drupal官网有上万个模块,只要你能想得到的功能,都可以找到对应的模块。然而,有一些模块在安装时会引发一些未知错误,甚至使网站无法正常访问。当然了,有的时候可能并不完全是模块的问题。
 
  这次的网站无法正常访问,是发生在安装mobile_detect模块启用时;之前也曾遇到过,前一天网站可以正常访问,第二天再次访问就异常无法访问了。每次遇到网站这样崩溃都会想尽办法去解决问题,可问题的根源可能是方方面面的。因此,在不停的去猜测问题的每一个可能的源头,然后尝试修改完善,直到成功。故而也积累了一些经验,其中一些,也得到许多高手的指点,还有一些纯粹是在黑暗中摸索出来的。具体来说,可以从以下几个方面着手:
 
  一、超时错误
 
  网站异常可能不是模块的问题,可能是由于数据写入太慢了,超时而导致的错误。所以,需要把php.ini中的max_execution_time的30秒的数值修改的大一些,比如改成300秒,900秒。这样可以避免许多模块安装导致的错误,也有可能避免drupal系统安装时时间延迟导致的安装失败。
 
  二、关联模块
 
  如果,异常错误已经发生了,你可能发现内容类型无法添加。这个时候,检查一下是不是最新安装或者启用了哪些模块。如果能够进入模块界面,进入禁用模块,一般问题可以解决。有的时候,要想办法找到可以进入的页面进行处理。
 
  三、修改数据库
 
  如果上述思路仍然无法解决异常错误,则可以通过修改数据库中配置表config的某些参数来启动、关闭相应模块。进入后台数据库,在表config表中找到刚刚安装的模块,对应的状态,由1改为0,即可禁用模块,就可以解决了。有一次,安装并且启用了两个模块,同时又启用了ThemeEditor模块,结果禁用前面两个模块问题依旧,于是想起虽然不是今天安装但是刚刚启用了ThemeEditor模块,禁用它,问题解决。
 
  这种处理方法也是不得已而为之,这样处理之后,模块可能会在数据库有残留,以后就永远留下了。遇到这种情况可以先从数据库直接检查日志,尝试修复导致停止的部分,如果连日志都没有,那应该尝试断点调试。
 
  在升级或安装模块中难免会遇到各种问题和错误,多少会产生一些数据残留,那么该如何判断数据库中的无用数据,把它从数据库中清理出来呢?
 
  研究发现,目前drupal系统并没有一套机制来硬性约束残留,如果模块开发比较规范,可以从命名上来处理,不然是没办法的。
 
  四、备份数据库
 
  为了避免安装模块后出现异常问题,对网站和数据库进行备份是非常有必要的;一旦出现异常,直接还原,剩去了查找原因解决问题的时间。有时候,可能在恢复数据的时候,会出问题,这个时候,把\mysql\my.ini文件的max_allowed_packet值改为max_allowed_packet=16M,然后重启服务器生效,即可解决。