[TASK] Update Guzzle (major) - #293
Merged
Merged
Conversation
| datasource | package | from | to | | ---------- | ----------------- | ------ | ----- | | packagist | guzzlehttp/guzzle | 7.15.2 | 8.0.1 | | packagist | guzzlehttp/psr7 | 2.13.0 | 3.0.0 |
eliashaeussler
enabled auto-merge
July 28, 2026 06:15
Collaborator
Coverage Report for CI Build 30334206667Coverage remained the same at 97.619%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^6.5 || ^7.0→^6.5 || ^7.0 || ^8.0^1.9 || ^2.0→^1.9 || ^2.0 || ^3.0Release Notes
guzzle/guzzle (guzzlehttp/guzzle)
v8.0.1Compare Source
Security
Hostheader values that are not printable ASCII (GHSA-v5mv-p594-2x33)Hostheader after client URI rewrites (GHSA-v5mv-p594-2x33)v8.0.0Compare Source
Added
SensitiveParametermetadata to credential-bearing parameters so PHP 8.2+ redacts their values in exception tracesMultiplexing::NONEsupport as a client, cURL multi handler, and conditional request optionConnectTimeoutExceptionfor connect-phase timeouts, extendingConnectExceptionNetworkExceptionfor no-response network failuresNetworkTimeoutExceptionfor no-response transport timeoutsResponseTransferException, withResponseTimeoutExceptionfor response-transfer timeoutsrequest_factory,response_factory,stream_factory, anduri_factoryrequest optionsclose()lifecycle methods to the built-in cURL handlers and concrete cURL factoryHandlerClosedExceptionfor pending transfers rejected byCurlMultiHandler::close()TransportSharing::PERSISTENT_PREFERandTransportSharing::PERSISTENT_REQUIRE)ProxyOptionsfor proxy option resolutionResponseExceptionfor request failures with responsesChanged
__Secure-and__Host-prefix requirements on response cookiesFileCookieJarandSessionCookieJarpersistence against unsafe unserializationFileCookieJarcookie files to owner-only permissionsRuntimeExceptionUtilstime, timeout, IDN, and environment helpers to dedicated internal classesguzzlehttp/promisesversion constraint to^3.0guzzlehttp/psr7version constraint to^3.0Content-Typeboundary parameters when requiredSetCookiemethodsstringreturn type toSetCookie::__toString()force_ip_resolve, protocols, anddelayranges at the client boundarynoentry as final even without a scheme-specific proxy entryRequestException, notInvalidArgumentException, for an unavailable proxy or TLS featureno_proxy/NO_PROXYfrom the environment in the stream handler, including*to disable proxyinghttps://or SOCKS proxy in the stream handler, matching itsproxyoption behaviorProxy-Authorizationon every routeProxy-Authorizationfield, including empty, on stream proxiesCURLOPT_PROXYHEADERwithout proxy header separation supporton_headerscallbacksPooliterable key as a trailing argument to per-request observer callbacksidn_conversion,retries, and built-in handleron_statsoption values before usequeryandform_paramsoptionsbodyoptionExpect: 100-Continueinjection to HTTP/1.1 requests onlySetCookieconstructor field types instead of coercing themnullas an omitted path or name when clearing cookiesauthrequest option arraysauthrequest optionauthrequest option when following cross-origin redirectsRefererheader to the origin on cross-origin redirectsHandlerStack::remove()argumentsPoolrequest collections to be iterableDomainattribute as host-only cookiesMax-AgeoverExpireswhen both attributes are presentCookieJar::getCookieByName()Max-Agecookie values instead of truncating themContent-Lengthand combinations withTransfer-EncodingTransfer-Encodingmetadata and coalesced framing inprogresson newer PHPLocationvalues inBadResponseExceptioncrypto_methodoption through the SSL context so it consistently controls the minimum TLS versionTransferExceptionand its subclassesNetworkExceptionConnectException, with connect timeouts asConnectTimeoutExceptionNetworkException, with timeouts asNetworkTimeoutExceptionResponseExceptionResponseTransferExceptionsinkoption or reads trailing bytes for responses that cannot carry a bodyContent-Length, including decoded gzip/deflateContent-Lengthcasings and preserve encoded values on decoded responsesResponseException101 Switching Protocolsbefore the final responseResponseExceptionand skip non-seekable sink rewindsResponseExceptionGuzzleHttp\Exception\InvalidArgumentExceptionfor invalid built-in handler optionssink, and HTTP/3 setup failures asRequestExceptionConnectTimeoutExceptionfor connect timeoutsNetworkTimeoutExceptionfor cURL no-response timeout errorsResponseTimeoutExceptionfor response-aware transfer timeoutstimeoutoption as a total transfer deadline in the stream handler when it buffers the responsetimeoutdeadlinedefault_socket_timeoutini setting in the stream handlerread_timeoutas an idle timeout for every request stage, defaulting to 60 secondsconnect_timeoutset to0disabling itUser-AgentandFromheader values from theuser_agentandfromini settingsRequestExceptionorResponseExceptionby phaseResponseExceptionorRequestExceptionby phasesinkas caller-owned in the built-in cURL and stream handlersLocationheadersprogresscallbacks to abort transfers with truthy return valuesprogresscallback arguments to integer byte countsprogressthrowables withResponseExceptionwhen a response exists, otherwiseRequestExceptionon_statsCURLOPT_XFERINFOFUNCTIONfor built-in cURL progress callbacks when availableMessageFormatterfinal and requiredMiddleware::log()formatters to implementMessageFormatterInterfaceCurlFactory,CurlHandler,CurlMultiHandler,MockHandler, andStreamHandlerfinalGuzzleHttp\Handler\Proxyfinalon_trailerscallbacks, reject non-callableon_trailersvalues, and wrapon_trailerscallback exceptions inResponseExceptionmultiplexdefaults toMultiplexing::WAIT)CURLOPT_PIPEWAITcURL option at themultiplexrequest optionCURLMOPT_PIPELININGin favour of themultiplexcURL multi handler optionCURLOPT_HTTPAUTHmask permits NTLMselect_timeoutcURL multi handler option valuesSet-Cookiestrings with RFC 6265 whitespace trimmingSet-Cookieattributes that require a value when parsingRemoved
Client::__call(); use the typed HTTP verb methods orrequest()/requestAsync()ClientInterface::getConfig(); the concreteClient::getConfig()remains availableGUZZLE_CURL_SELECT_TIMEOUTenvironment variable; useCurlMultiHandler'sselect_timeoutoptionhandlerrequest option; configure the handler on the clientCurlMultiHandler::$_mh; passCURLMOPT_*values through constructoroptionsinsteadRedirectMiddleware::$defaultSettings; useRedirectMiddleware::DEFAULT_SETTINGSRetryMiddleware::exponentialDelay()methodRequestException::wrapException()methodUtils::describeType()methodUtils::jsonDecode()andUtils::jsonEncode()in favor of native JSON functionsGuzzleHttpnamespace functions in favor of native or class equivalentsUtils::defaultCaBundle(); rely on the system trust store or pass a bundle path via theverifyoptionHandlerStack::__toString()RequestException::getHandlerContext()andConnectException::getHandlerContext()RequestException; useResponseExceptionUtils::isHostInNoProxy(); useProxyOptionshelpers for Guzzle 8 no-proxy matchingUtils::isUriInNoProxy(); useProxyOptions::isUriInNoProxy()Handler\Proxy::wrapTlsFallback(); the default handler stack selects the cURL or stream handler by TLS support automaticallyguzzle/psr7 (guzzlehttp/psr7)
v3.0.0Compare Source
Added
DiagnosticValue::escape()to escape controls and malformed UTF-8 in diagnosticsGuzzleHttp\Psr7\Exception\TimeoutExceptionfor timed-out stream operationsGuzzleHttp\Psr7\Utils::redactUserInfoInString()to redact the userinfo of a raw URI string within textGuzzleHttp\Psr7\Rfc3986to public API withisValid*()predicates andcanonicalizeIpv6()GuzzleHttp\Psr7\UriNormalizer::CANONICALIZE_IPV6_HOSTtoPRESERVING_NORMALIZATIONSChanged
psr/http-message:^2.0and add native parameter and return typespsr/http-factory:^1.1ServerRequest::fromGlobals()still uppercasestmp_name,size, orerrorerrorvaluesUploadedFile::moveTo()read()lengths across all stream implementations+flag anywhere in a mode forStream::isReadable()/isWritable()PumpStreamsource callablesPumpStreamclose and detachMessage::bodySummary()nullfor theMessage::bodySummary()truncation length to use the defaultLimitStreamoffset/limit and track non-seekable offset by bytes skippedFnStreamclose and detach terminal, calling close callbacks at most onceFnStreamclose callbacks during destructor cleanupCachingStream::close()idempotent, preserving remote cleanup after detachCachingStreamcursor when aSEEK_ENDtarget on an unknown-size stream is rejectedUri::getPath()and origin-form request targetsfileURIs with rootless paths without the//separatorfileURIs with empty paths asfile:instead of the unparseablefile:////paths with/.UriResolver::relativize()when an empty-path target requires oneUriResolver::relativize()when it would inherit the base fragmentUriResolver::relativize()when an equal-path target's last path segment contains a colonUri::fromParts()ports instead of casting themwsandwssschemeswsandwssdefault ports inUriComparator::isCrossOrigin()port comparisonsUtils::redactUserInfo()$_SERVERbyREQUEST_METHOD, using target authority beforeSERVER_PORTREQUEST_URItargets inServerRequest::fromGlobals()HTTP_HOSTand malformedSERVER_PORTinServerRequest::getUriFromGlobals()REQUEST_METHODandSERVER_PROTOCOLserver values inServerRequest::fromGlobals()Hostand normalize leading-zero ports inMessage::parseRequest()Hostheaders and validate present values for all request-target formsMessage::parseRequest()Hostheader inRequest::withUri()when the URI changes or Host is emptyHostheaders synthesized byMessage::toString()Message::toString()from the request URIHostheaders set byUtils::modifyRequest()URI changesOPTIONS *andCONNECTauthority-form request targets inMessage::parseRequest()Request::withRequestTarget()Utils::streamFor()Query::build()Query::build()andMultipartStreamcontentsUtils::streamFor()Utils::streamFor()now rejects non-string scalar bodiesUri::withQueryValues()now rejects non-string valuesUtils::modifyRequest()change valuesUtils::copyToStream()to throw when destination streams cannot make progressTimeoutExceptionfromStreamread/write andUtilscopy/hash/readLine on stream timeoutsTimeoutExceptionfromAppendStream::read(),CachingStream::read(), andUtils::tryGetContents()on stream timeoutsTimeoutExceptionfromInflateStreamwhen the decoded source stream times outInflateStream::close()Utils::copyToStream()OverflowExceptionwhen stream byte counts or offsets exceedPHP_INT_MAXStreamWrapperruntime failures to PHP stream failure valuesContent-Lengthtomultipart/form-dataparts (RFC 7578 §4.8)Content-Dispositionparameters and reject unsafe boundaries and part headersMultipartStreampart header valuesMultipartStreamboundary'0'instead of replacing it with a generated boundarywithHost(), including userinfo formsUriconstruction,fromParts(), andwithHost()UriComparator::isCrossOrigin()CAPITALIZE_PERCENT_ENCODINGandDECODE_UNRESERVED_CHARACTERSto userinfo and hostHeader::splitList()Header::parse()Removed
ralouphie/getallheadersdependencyHeader::normalize()methodConfiguration
📅 Schedule: (UTC)
* * * * 1-5)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.