You are here

迁移Drupal7站点到PHP7.1

客户的Drupal7站点运行了很长时间了,从最早的开始到现在有6年了,共有16Drupal7站点需要迁移,从一个老旧版本的服务器,迁移到新的服务器上面去。新的服务器,PHP版本7.1Mysql版本5.7linux的版本Centos6.8.

   由于年久失修,Drupal7站点,在迁移的过程中遇到了这样的问题:

Notice: Constant DATE_RFC7231 already defined in /home/www/html/d7production/includes/bootstrap.inc on line 258

   这个问题,导致了整个站点白屏。解决了白屏以后,看到了上述错误信息。通过搜索,找到了答案:

https://www.drupal.org/node/2877243

 

if (!defined('DATE_RFC7231')) {

  define('DATE_RFC7231', 'D, d M Y H:i:s \G\M\T');

}

   原来是在Drupal7里面,核心定义了常量DATE_RFC7231。但是到了php7.1PHP也定义了这个常量。这样就导致了两个常量之间的冲突。从另一方面,我们也看到,英雄所见略同,好的东西慢慢就会成为标准。

   Drupal官方的这个issue里面,核心开发者的回复,大意是说,Drupal7核心维护者,现在越来越少,对于类似问题的响应也就慢了一些。另外,发现7.56版的Drupal已经自带了这个修正,所以干脆将站点升级到Drupal7.56.

   

   另外的一个问题,就是程序版本太旧,在php7.1下面完全跑不动。我就将ctoolsviewspanels手动的更新到最新版本。这个时候,访问站点还是不行。

但是运行update.php,却是可以的。修改settings.php文件,修改为:

$update_free_access = true;

将这个变量设置为true,这样不用登陆站点,也可以升级程序。程序升级过后,白屏问题就解决了。

 

模块目录,换了位置,导致站点访问不了。有时候,我们会变更modules的目录,导致原来存储的模块的路径失效。这个时候可以使用registry_rebuild,这个其实不是一个模块,是一个PHP程序。把它放到Drupal安装目录下面的modules文件夹下面,执行PHP

http://example.com/sites/all/modules/registry_rebuild/registry_rebuild.php

 

执行过后,模块的文件目录重新构建了一遍,这样就好了。


论坛:

Drupal版本: