Ошибка на друпале 9. Only variables should be passed by reference с чем может быть связана?
Всем привет! В сайте на cms drupal 9 возникает ошибка.
С чем это может быть связано?
Дополнительно:
Такое сообщение, как правило, возникает, когда код, написанный во времена PHP5
запускают на PHP7.
Связано оно с тем, что функция (в данном случае - hrutka_preprocess_page) ожидает получить ссылку на переменную, а получает константу. Скорее всего, это второй параметр со значением 'page'.
Для исправления нужно разобраться, действительно ли требуется передача по ссылке и либо исправить заголовок функции, либо предварительно записывать константу в переменную, которую уже использовать в вызове функции.
В PHP8 такая ситуация из предупреждения стала критической ошибкой.
Очевидно, с тем, что hrutka_preprocess_page принимает аргумент по ссылке . Загляните в мануал, там полезное пишут.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Ошибка "Only variables should be passed by reference" в Drupal 9 может быть связана с несколькими причинами. Давайте разберем их по порядку:
1. Передача значения по ссылке: В PHP есть два способа передачи аргументов в функцию - по значению и по ссылке. Если вы передаете значение по ссылке (используя амперсанд & перед переменной), то переменная должна быть переменной, а не выражением. Например, вы не можете передавать выражение типа `$a + $b` по ссылке, так как это не является переменной.
2. Использование функций, которые не могут принимать ссылки: Некоторые встроенные функции в PHP не могут принимать значения по ссылке. Например, функции `array_map` или `array_filter` не могут принимать аргументы по ссылке. В этом случае вам нужно создать переменную и передать ее по ссылке.
3. Неправильное использование ссылок: Иногда ошибка может возникать из-за неправильного использования ссылок в вашем коде. Убедитесь, что вы используете ссылки только там, где это необходимо, и что вы передаете переменные, а не выражения.
Пример кода с ошибкой "Only variables should be passed by reference":
function add_one(&$value) { $value = $value + 1; } $num = 5; add_one($num + 1); // Ошибка: выражение $num + 1 не является переменной
Исправленный пример:
function add_one(&$value) { $value = $value + 1; } $num = 5; add_one($num); // Передаем переменную $num по ссылке
Проверьте свой код на наличие указанных выше причин ошибки и исправьте его соответственно. Надеюсь, это поможет вам избавиться от ошибки "Only variables should be passed by reference" в Drupal 9.