Deprecation: #109548 - GeneralUtility::locationHeaderUrl() without PSR-7 request 

See forge#109548

Description 

Calling \TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl() without providing a PSR-7 \Psr\Http\Message\ServerRequestInterface as the second argument is deprecated.

The method previously resolved the current host and request directory via \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv(), which hides an implicit dependency on server globals. The method signature has been extended to accept an explicit PSR-7 request object, which should be passed instead.

Impact 

A PHP E_USER_DEPRECATED error is triggered when \TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl() is called without a \ServerRequestInterface argument.

Affected installations 

All installations that call \TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl() without passing \ServerRequestInterface as the second argument.

The extension scanner will detect affected usages as a strong match.

Migration 

Pass the current PSR-7 request as the second argument to \TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl().

use TYPO3\CMS\Core\Utility\GeneralUtility;
+ use Psr\Http\Message\ServerRequestInterface;

- $url = GeneralUtility::locationHeaderUrl($path);
+ $url = GeneralUtility::locationHeaderUrl($path, $request);
Copied!

The PSR-7 request is available in various places, for example as an argument in controller actions, via $GLOBALS['TYPO3_REQUEST'] in legacy contexts, and via \ServerRequestInterface method parameters.