Skip to content

Commit

Permalink
ext/curl: Bump minimum Curl version to >= 7.61.0 (#13259)
Browse files Browse the repository at this point in the history
Bumps the minimum required libcurl version to 7.61.0.

Please also see #4917, which bumped minimum libcurl version to the current >= 7.29.0.
This bumps the minimum requirement to Curl 7.61.0 (released 2018 Sept).

Ubuntu, Debian, RHEL, and RHEL derivatives have major and LTS version bumps this year. Following are the
libcurl-dev/libcurl-devel versions available in the oldest supported (LTS or otherwise) in major OSs.

 - Debian buster: [7.64](https://packages.debian.org/buster/libcurl4-openssl-dev)
 - Ubuntu 20.04: [7.68](https://packages.ubuntu.com/focal/libcurl-dev)
 - CentOS/RHEL 7: 7.29
 - RHEL 8/Rocky 8/EL 8: 7.61
 - Fedora 38: 7.87

RHEL/CentOS 7 reaches EOL mid 2024, so for PHP 8.4 scheduled towards the end of this year, we can safely
bump the minimum libcurl version.

7.61.0 was selected as the new minimum because RHEL and derivatives have libcurl-devel version 7.61. RHEL 8 is
a current and supported RHEL version.
  • Loading branch information
Ayesh committed Jan 31, 2024
1 parent e30c11f commit edb9f65
Show file tree
Hide file tree
Showing 12 changed files with 22 additions and 567 deletions.
1 change: 1 addition & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Core:

Curl:
. Deprecated the CURLOPT_BINARYTRANSFER constant. (divinity76)
. Bumped required libcurl version to 7.61.0. (Ayesh)

Date:
. Added DateTime[Immutable]::createFromTimestamp. (Marc Bennewitz)
Expand Down
3 changes: 3 additions & 0 deletions UPGRADING
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,9 @@ PDO_SQLITE:
9. Other Changes to Extensions
========================================

- Curl:
. The Curl extension now requires at least libcurl 7.61.0.

- Intl:
. The class constants are typed now.

Expand Down
2 changes: 1 addition & 1 deletion ext/curl/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ PHP_ARG_WITH([curl],
[Include cURL support])])

if test "$PHP_CURL" != "no"; then
PKG_CHECK_MODULES([CURL], [libcurl >= 7.29.0])
PKG_CHECK_MODULES([CURL], [libcurl >= 7.61.0])
PKG_CHECK_VAR([CURL_FEATURES], [libcurl], [supported_features])

PHP_EVAL_LIBLINE($CURL_LIBS, CURL_SHARED_LIBADD)
Expand Down
68 changes: 0 additions & 68 deletions ext/curl/curl.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -472,13 +472,11 @@
* @cvalue CURLOPT_WRITEHEADER
*/
const CURLOPT_WRITEHEADER = UNKNOWN;
#if LIBCURL_VERSION_NUM >= 0x072000
/**
* @var int
* @cvalue CURLOPT_XFERINFOFUNCTION
*/
const CURLOPT_XFERINFOFUNCTION = UNKNOWN;
#endif

/* */
/**
Expand Down Expand Up @@ -776,13 +774,11 @@
* @cvalue CURLE_SSL_PEER_CERTIFICATE
*/
const CURLE_SSL_PEER_CERTIFICATE = UNKNOWN;
#if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */
/**
* @var int
* @cvalue CURLE_SSL_PINNEDPUBKEYNOTMATCH
*/
const CURLE_SSL_PINNEDPUBKEYNOTMATCH = UNKNOWN;
#endif
/**
* @var int
* @cvalue CURLE_TELNET_OPTION_SYNTAX
Expand Down Expand Up @@ -998,13 +994,11 @@
* @cvalue CURLM_OUT_OF_MEMORY
*/
const CURLM_OUT_OF_MEMORY = UNKNOWN;
#if LIBCURL_VERSION_NUM >= 0x072001 /* Available since 7.32.1 */
/**
* @var int
* @cvalue CURLM_ADDED_ALREADY
*/
const CURLM_ADDED_ALREADY = UNKNOWN;
#endif

/* Curl proxy constants */
/**
Expand Down Expand Up @@ -2385,7 +2379,6 @@
*/
const CURLSSH_AUTH_AGENT = UNKNOWN;

#if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */
/**
* @var int
* @cvalue CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
Expand All @@ -2411,17 +2404,13 @@
* @cvalue CURLMOPT_MAX_TOTAL_CONNECTIONS
*/
const CURLMOPT_MAX_TOTAL_CONNECTIONS = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x071f00 /* Available since 7.31.0 */
/**
* @var int
* @cvalue CURLOPT_SASL_IR
*/
const CURLOPT_SASL_IR = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */
/**
* @var int
* @cvalue CURLOPT_DNS_INTERFACE
Expand Down Expand Up @@ -2453,9 +2442,7 @@
* @cvalue CURL_VERSION_HTTP2
*/
const CURL_VERSION_HTTP2 = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */
/**
* @var int
* @cvalue CURLOPT_LOGIN_OPTIONS
Expand All @@ -2477,9 +2464,7 @@
* @cvalue CURL_SSLVERSION_TLSv1_2
*/
const CURL_SSLVERSION_TLSv1_2 = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072400 /* Available since 7.36.0 */
/**
* @var int
* @cvalue CURLOPT_EXPECT_100_TIMEOUT_MS
Expand All @@ -2495,9 +2480,7 @@
* @cvalue CURLOPT_SSL_ENABLE_NPN
*/
const CURLOPT_SSL_ENABLE_NPN = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */
/**
* @var int
* @cvalue CURLHEADER_SEPARATE
Expand All @@ -2518,9 +2501,7 @@
* @cvalue CURLOPT_PROXYHEADER
*/
const CURLOPT_PROXYHEADER = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072600 /* Available since 7.38.0 */
/**
* @var int
* @cvalue CURLAUTH_NEGOTIATE
Expand All @@ -2531,17 +2512,13 @@
* @cvalue CURL_VERSION_GSSAPI
*/
const CURL_VERSION_GSSAPI = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */
/**
* @var int
* @cvalue CURLOPT_PINNEDPUBLICKEY
*/
const CURLOPT_PINNEDPUBLICKEY = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */
/**
* @var int
* @cvalue CURLOPT_UNIX_SOCKET_PATH
Expand All @@ -2567,17 +2544,13 @@
* @cvalue CURL_VERSION_UNIX_SOCKETS
*/
const CURL_VERSION_UNIX_SOCKETS = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072900 /* Available since 7.41.0 */
/**
* @var int
* @cvalue CURLOPT_SSL_VERIFYSTATUS
*/
const CURLOPT_SSL_VERIFYSTATUS = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072a00 /* Available since 7.42.0 */
/**
* @var int
* @cvalue CURLOPT_PATH_AS_IS
Expand All @@ -2588,9 +2561,7 @@
* @cvalue CURLOPT_SSL_FALSESTART
*/
const CURLOPT_SSL_FALSESTART = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */
/**
* @var int
* @cvalue CURL_HTTP_VERSION_2
Expand Down Expand Up @@ -2628,25 +2599,19 @@
* @cvalue CURLPIPE_MULTIPLEX
*/
const CURLPIPE_MULTIPLEX = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072c00 /* Available since 7.44.0 */
/**
* @var int
* @cvalue CURLSSLOPT_NO_REVOKE
*/
const CURLSSLOPT_NO_REVOKE = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072d00 /* Available since 7.45.0 */
/**
* @var int
* @cvalue CURLOPT_DEFAULT_PROTOCOL
*/
const CURLOPT_DEFAULT_PROTOCOL = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072e00 /* Available since 7.46.0 */
/**
* @var int
* @cvalue CURLOPT_STREAM_WEIGHT
Expand All @@ -2667,9 +2632,7 @@
* @cvalue CURL_PUSH_DENY
*/
const CURL_PUSH_DENY = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x072f00 /* Available since 7.47.0 */
/**
* @var int
* @cvalue CURL_HTTP_VERSION_2TLS
Expand All @@ -2680,17 +2643,13 @@
* @cvalue CURL_VERSION_PSL
*/
const CURL_VERSION_PSL = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073000 /* Available since 7.48.0 */
/**
* @var int
* @cvalue CURLOPT_TFTP_NO_OPTIONS
*/
const CURLOPT_TFTP_NO_OPTIONS = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */
/**
* @var int
* @cvalue CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
Expand All @@ -2706,17 +2665,13 @@
* @cvalue CURLOPT_TCP_FASTOPEN
*/
const CURLOPT_TCP_FASTOPEN = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */
/**
* @var int
* @cvalue CURLINFO_HTTP_VERSION
*/
const CURLINFO_HTTP_VERSION = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */
/**
* @var int
* @cvalue CURLE_WEIRD_SERVER_REPLY
Expand All @@ -2727,9 +2682,7 @@
* @cvalue CURLOPT_KEEP_SENDING_ON_ERROR
*/
const CURLOPT_KEEP_SENDING_ON_ERROR = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
/**
* @var int
* @cvalue CURL_SSLVERSION_TLSv1_3
Expand Down Expand Up @@ -2850,9 +2803,7 @@
* @cvalue CURLPROXY_HTTPS
*/
const CURLPROXY_HTTPS = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */
/**
* @var int
* @cvalue CURL_MAX_READ_SIZE
Expand All @@ -2863,9 +2814,7 @@
* @cvalue CURLOPT_ABSTRACT_UNIX_SOCKET
*/
const CURLOPT_ABSTRACT_UNIX_SOCKET = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */
/**
* @var int
* @cvalue CURL_SSLVERSION_MAX_DEFAULT
Expand Down Expand Up @@ -2901,17 +2850,13 @@
* @cvalue CURLOPT_SUPPRESS_CONNECT_HEADERS
*/
const CURLOPT_SUPPRESS_CONNECT_HEADERS = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073601 /* Available since 7.54.1 */
/**
* @var int
* @cvalue CURLAUTH_GSSAPI
*/
const CURLAUTH_GSSAPI = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
/**
* @var int
* @cvalue CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
Expand Down Expand Up @@ -2952,9 +2897,7 @@
* @cvalue CURLOPT_SOCKS5_AUTH
*/
const CURLOPT_SOCKS5_AUTH = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073800 /* Available since 7.56.0 */
/**
* @var int
* @cvalue CURLOPT_SSH_COMPRESSION
Expand All @@ -2965,9 +2908,7 @@
* @cvalue CURL_VERSION_MULTI_SSL
*/
const CURL_VERSION_MULTI_SSL = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073900 /* Available since 7.57.0 */
/**
* @var int
* @cvalue CURL_VERSION_BROTLI
Expand All @@ -2978,17 +2919,13 @@
* @cvalue CURL_LOCK_DATA_CONNECT
*/
const CURL_LOCK_DATA_CONNECT = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073a00 /* Available since 7.58.0 */
/**
* @var int
* @cvalue CURLSSH_AUTH_GSSAPI
*/
const CURLSSH_AUTH_GSSAPI = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073b00 /* Available since 7.59.0 */
/**
* @var int
* @cvalue CURLINFO_FILETIME_T
Expand All @@ -3004,9 +2941,7 @@
* @cvalue CURLOPT_TIMEVALUE_LARGE
*/
const CURLOPT_TIMEVALUE_LARGE = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073c00 /* Available since 7.60.0 */
/**
* @var int
* @cvalue CURLOPT_DNS_SHUFFLE_ADDRESSES
Expand All @@ -3017,9 +2952,7 @@
* @cvalue CURLOPT_HAPROXYPROTOCOL
*/
const CURLOPT_HAPROXYPROTOCOL = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */
/**
* @var int
* @cvalue CURL_LOCK_DATA_PSL
Expand Down Expand Up @@ -3080,7 +3013,6 @@
* @cvalue CURLOPT_TLS13_CIPHERS
*/
const CURLOPT_TLS13_CIPHERS = UNKNOWN;
#endif

#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */
/**
Expand Down

2 comments on commit edb9f65

@Girgias
Copy link
Member

@Girgias Girgias commented on edb9f65 Jan 31, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Ayesh this seems to fail a test on MacOS, not sure why tho...

@Ayesh
Copy link
Contributor Author

@Ayesh Ayesh commented on edb9f65 Jan 31, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for merging this @Girgias.

I think it was quite unfortunate timing that Curl 8.6.0 was released just a moment after this was merged, and it contained a change in string patterns causing the test to fail. I could reproduce it in Ubuntu as well, by building ext/curl with libcurl 8.6.0. I opened #13292 with a fix.

Please sign in to comment.