Drupal

Drupal Deprecated 处理方法

2023-12-10  本文已影响0人  又起风了_

有时更新了PHP版本后,Drupal会出现一些Deprecated提示,由于第三方和自定义模块都是在bootstrap.inc中一起加载的,所以报错信息都在bootstrap.inc这个文件里,不能具体定位到某个文件。

例如Deprecated信息如下:

Deprecated function: Required parameter $form_state follows optional parameter $input in include_once() (line 1439 of /xxx/xxx/xxx/xxx/includes/bootstrap.inc).

  1. 我们可以先用fgrep命令大致搜一下有哪些文件中的function有 $input 和$form_state变量
~ cd site_root_dir
~ cd sites/all
~ fgrep -r '$input' modules | fgrep '$form_state' | grep function
modules/references/user_reference/user_reference.module:function user_reference_autocomplete_value($element, $input = FALSE, $form_state) {
modules/references/node_reference/node_reference.module:function node_reference_autocomplete_value($element, $input = FALSE, $form_state) {
modules/date/date_elements.inc:function date_date_select_pre_validate_alter(&$element, &$form_state, &$input) {
modules/date/date_elements.inc:function date_date_text_pre_validate_alter(&$element, &$form_state, &$input) {
...
  1. 还好结果不是很多,后面就可以用php -l 的方式检查文件的语法了,如:
~ php -l modules/references/user_reference/user_reference.module
Deprecated: Optional parameter $input declared before required parameter $form_state is implicitly treated as a required parameter in modules/references/user_reference/user_reference.module on line 652
No syntax errors detected in modules/references/user_reference/user_reference.module

哈,运气不错,问题找到了,把references模块更新到最新版一般就ok了。

上一篇 下一篇

猜你喜欢

热点阅读