1 报错原因
我曾经用 Drupal 建过站,虽不再更新,但里面有些文章还算有点价值,就把原来的程序挂在主机上。
Durpal 的设计哲学是完全不考虑大版本之间的兼容性,久不维护后,我遇到如下报错:
Warning: Illegal string offset 'field' 在 DatabaseCondition->__clone() (行 1895 在 /.../includes/database/query.inc).
这个报错是 PHP 5.3 或更早的版本对隐式转换的处理和 5.4 之后不一致带来的。详情可看这个页面:https://www.drupal.org/node/1414412
2 解决办法
找到对应的目录,打开 query.inc 文件,按照报错的行数,将如下代码:
function __clone() { $this->changed = TRUE; foreach ($this->conditions as $key => $condition) { if ($condition['field'] instanceOf QueryConditionInterface) { $this->conditions[$key]['field'] = clone($condition['field']); } } }
改成:
function __clone() { $this->changed = TRUE; foreach ($this->conditions as $key => $condition) { if ($key !== '#conjunction' && $condition['field'] instanceOf QueryConditionInterface) { $this->conditions[$key]['field'] = clone($condition['field']); } } }
即可解决。
如何解决 Drupal 报错 Warning: Illegal string offset ‘field’ in DatabaseCondition->__clone()、Drupal 报错怎么办、PHP 的隐式转换是什么。
版权声明:本站所有原创文章,作者保留版权。转载必须包含本声明,不得修改任何内容(包括文章标题),并以超链接的形式注明作者“Bary”和本文原始地址。