Ошибка в модуле computed_field.module - белый экран при авторизованном входе

Аватар пользователя maxim_al maxim_al 10 сентября в 8:16

Drupal 6LTS пытаюсь запустит существующий сайт Drupal 6.38 многое работает, но вот столкнулся со странным. Если авторизуюсь админом на сайте, то при входе в один раздел получаю белый экран - ничего не выводится. В логе ошибок есть такое:
[php7:emerg] PHP Parse error: syntax error, unexpected '<', expecting end of file in /var/www/html/sites/www/modules/computed_field/computed_field.module(297) : eval()'d code on line 1
причём если не авторизоваться - страница нормально выводится.
Фишка в том что на исходном сайте, подобная ошибка в логе есть, но там PHP 5 и страница всё равно отображается.
Куда рыть?

0 Thanks

Комментарии

Аватар пользователя maxim_al maxim_al 10 сентября в 10:01

Всё так и есть.
Но вот что получается, если я эту строку заремлю, то всё вроде как и работает...
строка выделена жирным:
/**
* Theme function for 'default' text field formatter.
*/
function theme_computed_field_formatter_default($element) {
$field = content_fields($element['#field_name']);
// For "some" backwards compatibility
$node_field_item['value'] = $element['#item']['value'];

// Allow the value to be formated from code not stored in DB
$display_func = 'computed_field_'. $field['field_name'] .'_display';
if (function_exists($display_func)) {
$display = $display_func($field, $element);
}
else {
eval($field['display_format']);
}
return $display;
}

Аватар пользователя Semantics Semantics 10 сентября в 10:09

Ошибка не в модуле computed_field, а в том коде, который у вас используется для расчёта одного из полей.
Написано же, что в eval()

Аватар пользователя maxim_al maxim_al 10 сентября в 11:56

Ну я новичок в этом деле, могу не так понимать или не так выражаться, уж извините 😀.
Ну хорошо, там стоит вычисление, и как подобраться к тому коду, неправильному, который туда передается?
Как от eval($field['display_format']) перейти к неправильному коду?

Аватар пользователя Semantics Semantics 10 сентября в 12:00

Смотрите, что за поля у вас в проекте с типом computed field, в настройках полей и будет этот кривой код

Аватар пользователя maxim_al maxim_al 11 сентября в 2:59

За направление движения большое спасибо!
Смотрю где ошибка:

else {
eval($field['display_format']);
}

ругается на display_format
Нахожу вычисляемое поле:

IP field_ipcreator Computed Настроить

Иду в изменить и нахожу 2 блока:
1. Computed Code:

<?php
$node_field[0]['value'] = ip_address();
?>

2. Display Format:

<?php
print $node -> field_ipcreator[0]['value'];
?>

Если посмотреть в таблице в БД

a:9:{s:4:"code";s:50:"<?php
$node_field[0]['value'] = ip_address();
?>";s:14:"display_format";s:52:"<?php
print $node->field_ipcreator[0]['value'];
?>";s:5:"store";i:1;s:9:"data_type";s:4:"text";s:11:"data_length";s:0:"";s:13:"data_not_NULL";i:1;s:12:"data_default";s:0:"";s:13:"data_sortable";i:1;s:17:"field_permissions";a:5:{s:6:"create";s:6:"create";s:4:"view";s:4:"view";s:4:"edit";i:0;s:8:"edit own";i:0;s:8:"view own";i:0;}}

то как я понимаю ошибка во втором "блоке" (Display Format).
Что-то я не очень понимаю в чём там ошибка м.б. Где в этом коде может быть "unexpected '<'"
Или автор сего кода ошибся и там должно быть исключительно

print $node -> field_ipcreator[0]['value'];

без <?php ?> ?
Я попробовал это убрать - ошибка пропала. Но мне не совсем ясно, здесь же вроде как php код должен быть, так же как в вычисляемом поле (Computed Code:) выше.