Problem/Motivation

After configuring my web server to PHP 8 from PHP 7.4, I started seeing these warnings on all pages:

Warning: Drupal\agreement\AgreementHandler::Drupal\agreement\{closure}(): Argument #1 ($result) must be passed by reference, value given in Drupal\agreement\AgreementHandler->getAgreementByUserAndPath() (line 150 of modules/contrib/agreement/src/AgreementHandler.php).
Drupal\agreement\AgreementHandler->getAgreementByUserAndPath(Object, '/') (Line: 82)
Drupal\agreement\EventSubscriber\AgreementSubscriber->checkForRedirection(Object, 'kernel.request', Object)
call_user_func(Array, Object, 'kernel.request', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.request') (Line: 134)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

Warning: Drupal\agreement\AgreementHandler::Drupal\agreement\{closure}(): Argument #1 ($result) must be passed by reference, value given in Drupal\agreement\AgreementHandler->getAgreementByUserAndPath() (line 166 of modules/contrib/agreement/src/AgreementHandler.php).
Drupal\agreement\AgreementHandler->getAgreementByUserAndPath(Object, '/') (Line: 82)
Drupal\agreement\EventSubscriber\AgreementSubscriber->checkForRedirection(Object, 'kernel.request', Object)
call_user_func(Array, Object, 'kernel.request', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.request') (Line: 134)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

Warning: Drupal\agreement\AgreementHandler::Drupal\agreement\{closure}(): Argument #1 ($result) must be passed by reference, value given in Drupal\agreement\AgreementHandler->getAgreementByUserAndPath() (line 190 of modules/contrib/agreement/src/AgreementHandler.php).
Drupal\agreement\AgreementHandler->getAgreementByUserAndPath(Object, '/') (Line: 82)
Drupal\agreement\EventSubscriber\AgreementSubscriber->checkForRedirection(Object, 'kernel.request', Object)
call_user_func(Array, Object, 'kernel.request', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.request') (Line: 134)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

Steps to reproduce

Switch your web server to PHP 8 with the Agreement module enabled.

Proposed resolution

I have a patch that removes the & characters from before a several variables in src/AgreementHandler.php. This seems to solve the problem.

Remaining tasks

I'm requesting this change for the 2.0 branch, because we rely on several uncommitted patches, and can't upgrade until they're merged.

CommentFileSizeAuthor
#2 fix-php8-warning-3276506.patch1.58 KBsamlerner

Comments

SamLerner created an issue. See original summary.

samlerner’s picture

Issue summary: View changes
StatusFileSize
new1.58 KB
samlerner’s picture

Noting this is fixed in the 3.0.x version. We can upgrade after all the other dependent patches are merged.

  • mradcliffe committed b21fa70 on 8.x-2.x authored by SamLerner
    Issue #3276506 by SamLerner, Splushka, hmendes: Fixes pass by reference...
mradcliffe’s picture

Status: Needs review » Fixed

Thank you for backporting the patch.

I committed it to 8.x-2.x.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.