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.
Comments
Comment #2
samlerner commentedComment #3
samlerner commentedNoting this is fixed in the 3.0.x version. We can upgrade after all the other dependent patches are merged.
Comment #5
mradcliffeThank you for backporting the patch.
I committed it to 8.x-2.x.