PHP Fatal error: Call-time pass-by-reference has been removed in /Drupal Root DIR/modules/php/php.module(80)

PHP Fatal error: Call-time pass-by-reference has been removed in /Drupal Root DIR/modules/php/php.module(80)

任何人都可以为 Drupal 网站提供以下错误的解决方案吗?

Error - PHP Fatal error: Call-time pass-by-reference has been removed in /Drupal Root DIR/modules/php/php.module(80) : eval()'d code on line 1199

Call-time pass-by-reference has been removed

此错误发生在 PHP 5.4 之后,其中通过引用调用参数的方式为:

myReferencedFunction(&$referencedParameter);

已停止工作。必须已经声明方法和函数才能通过引用使用参数,如下所示:

function myReferencedFunction(&$parameter) {} // "&" goes here
myReferencedFunction($referencedParameter); // no "&"

因此,如果它是 Drupal 错误,那么您似乎已将 PHP 版本从低于 5.4 的版本升级到 5.4+。您必须将 PHP 降级到早于 5.4 的版本或将您的 Drupal 更新到兼容版本。

编辑: 顺便说一下,eval() 的代码? php.module?你应该确保你没有安装任何rootkit。

因为错误在 PHP 模块的 eval() 中,所以错误在您的 content 中,其中包含 PHP 语法错误(正如 yergo 所解释的)。如果您仍然可以编辑您的内容,则该错误很容易修复。

如果您无法编辑内容,但仍然可以访问模块管理页面,请禁用 PHP 模块。如果你不能,但可以 shell 访问你的服务器,你可以使用 Drush $drush pm-disable php. If you don't have shell access, you can disable the module manually in the DB.

停止使用 PHP 模块可能是个好主意,请参阅 the issue that lead to its removal from Drupal 8 了解原因。