I needed to bump local curl build version to fix a (php-unrelated) SEGV. Currently, I have
curl -V
curl 7.67.1-DEV (x86_64-pc-linux-gnu) libcurl/7.67.1-DEV OpenSSL/1.1.1d zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh2/1.9.0_DEV nghttp2/1.40.0-DEV
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s scp sftp smtp smtps tftp
Features: AsynchDNS brotli HTTP2 HTTPS-proxy IDN IPv6 Largefile libz Metalink NTLM NTLM_WB PSL SSL TLS-SRP UnixSockets
Rebuilding my usual PHP7.3/git install,
(add'l note: fwiw, the following issue also occurs with 7.4/git ...)
cd php7
git branch -a | grep \*
* PHP-7.3
git log | head
commit 9083e178f656878cab46aee52b555346ef92a768
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Nov 12 12:59:50 2019 +0300
Fixed wrong constant usage
commit ea2a125789d2e6cf7416bd706be1ac44df1367e4
Merge: 4a55794b98 2c9926f156
Author: Stanislav Malyshev <stas@php.net>
Date: Mon Nov 11 23:08:38 2019 -0800
works nicely as usual,
/usr/local/php7/bin/php -v
PHP 7.3.13-dev (cli) (built: Nov 14 2019 19:53:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.13-dev, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.13-dev, Copyright (c) 1999-2018, by Zend Technologies
But curl extension now fails,
ext/curl/interface.c:778:25: error: ‘CURLE_OBSOLETE20’ undeclared (first use in this function); did you mean ‘CURLE_OBSOLETE50’?
778 | REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR);
Before making noise about in @bugs, wanted to check 1st; known issue? additional/new config req'd?
Here's more detail
cd ext/curl
/usr/local/php7/bin/phpize
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
./configure \
--with-php-config=/usr/local/php7/bin/php-config \
--with-curl=/usr/local \
--with-libdir=lib64 \
--enable-shared --disable-static \
--with-gnu-ld
...
checking for cURL support... yes, shared
checking for libcurl.pc... using /usr/local/lib64/pkgconfig/libcurl.pc
checking for cURL 7.15.5 or greater... 7.67.1-DEV
checking for SSL support in libcurl... yes
checking how to run the C preprocessor... /usr/bin/cpp-9
checking for openssl support in libcurl... checking for ANSI C header files... yes
...
checking for gnutls support in libcurl... no
checking for curl_easy_perform in -lcurl... yes
checking for curl_easy_strerror in -lcurl... yes
checking for curl_multi_strerror in -lcurl... yes
...
, at make
,
make V=1
/bin/sh /usr/local/src/php7-src/ext/curl/libtool --mode=compile /usr/bin/gcc-9 -I. -I/usr/local/src/php7-src/ext/curl -DPHP_ATOM_INC -I/usr/local/src/php7-src/ext/curl/include -I/usr/local/src/php7-src/ext/curl/main -I/usr/local/src/php7-src/ext/curl -I/usr/local/php7/include/php -I/usr/local/php7/include/php/main -I/usr/local/php7/include/php/TSRM -I/usr/local/php7/include/php/Zend -I/usr/local/php7/include/php/ext -I/usr/local/php7/include/php/ext/date/lib -I/usr/local/include -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -D_FORTIFY_SOURCE=2 -DHAVE_CONFIG_H -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -c /usr/local/src/php7-src/ext/curl/interface.c -o interface.lo
mkdir .libs
/usr/bin/gcc-9 -I. -I/usr/local/src/php7-src/ext/curl -DPHP_ATOM_INC -I/usr/local/src/php7-src/ext/curl/include -I/usr/local/src/php7-src/ext/curl/main -I/usr/local/src/php7-src/ext/curl -I/usr/local/php7/include/php -I/usr/local/php7/include/php/main -I/usr/local/php7/include/php/TSRM -I/usr/local/php7/include/php/Zend -I/usr/local/php7/include/php/ext -I/usr/local/php7/include/php/ext/date/lib -I/usr/local/include -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -D_FORTIFY_SOURCE=2 -DHAVE_CONFIG_H -O3 -Wall -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fmessage-length=0 -grecord-gcc-switches -march=native -mtune=native -c /usr/local/src/php7-src/ext/curl/interface.c -fPIC -DPIC -o .libs/interface.o
In file included from /usr/local/php7/include/php/main/php.h:468,
from /usr/local/src/php7-src/ext/curl/interface.c:25:
/usr/local/src/php7-src/ext/curl/interface.c: In function ‘zm_startup_curl’:
/usr/local/src/php7-src/ext/curl/interface.c:778:25: error: ‘CURLE_OBSOLETE20’ undeclared (first use in this function); did you mean ‘CURLE_OBSOLETE50’?
778 | REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR);
| ^~~~~~~~~~~~~~~~~~~~~
/usr/local/php7/include/php/Zend/zend_constants.h:53:105: note: in definition of macro ‘REGISTER_LONG_CONSTANT’
53 | #define REGISTER_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
| ^~~~
/usr/local/src/php7-src/ext/curl/interface.c:778:2: note: in expansion of macro ‘REGISTER_CURL_CONSTANT’
778 | REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR);
| ^~~~~~~~~~~~~~~~~~~~~~
/usr/local/src/php7-src/ext/curl/interface.c:778:25: note: each undeclared identifier is reported only once for each function it appears in
778 | REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR);
| ^~~~~~~~~~~~~~~~~~~~~
/usr/local/php7/include/php/Zend/zend_constants.h:53:105: note: in definition of macro ‘REGISTER_LONG_CONSTANT’
53 | #define REGISTER_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
| ^~~~
/usr/local/src/php7-src/ext/curl/interface.c:778:2: note: in expansion of macro ‘REGISTER_CURL_CONSTANT’
778 | REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR);
| ^~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:194: interface.lo] Error 1
noting
/usr/local/src/php7-src/ext/curl/interface.c
...
REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_USER_REPLY);
778 REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR);
REGISTER_CURL_CONSTANT(CURLE_FUNCTION_NOT_FOUND);
...
checking,
grep `CURLE_OBSOLETE` /usr/local/include/curl/curl.h
CURLE_OBSOLETE24, /* 24 - NOT USED */
CURLE_OBSOLETE29, /* 29 - NOT USED */
CURLE_OBSOLETE32, /* 32 - NOT USED */
CURLE_OBSOLETE40, /* 40 - NOT USED */
CURLE_OBSOLETE44, /* 44 - NOT USED */
CURLE_OBSOLETE46, /* 46 - NOT USED */
CURLE_OBSOLETE50, /* 50 - NOT USED */
CURLE_OBSOLETE51, /* 51 - NOT USED */
CURLE_OBSOLETE57, /* 57 - NOT IN USE */
#define CURLE_OBSOLETE16 CURLE_HTTP2
#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED
#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT
#define `CURLE_OBSOLETE` CURLE_OBSOLETE50 /* no one should be using this! */
#define `CURLE_BAD_PASSWORD_ENTERED` CURLE_OBSOLETE46
#define `CURLE_BAD_CALLING_ORDER` CURLE_OBSOLETE44
#define `CURLE_FTP_USER_PASSWORD_INCORRECT` CURLE_OBSOLETE10
#define `CURLE_FTP_CANT_RECONNECT` CURLE_OBSOLETE16
#define `CURLE_FTP_COULDNT_GET_SIZE` CURLE_OBSOLETE32
#define `CURLE_FTP_COULDNT_SET_ASCII` CURLE_OBSOLETE29
#define `CURLE_FTP_WEIRD_USER_REPLY` CURLE_OBSOLETE12
! #define `CURLE_FTP_WRITE_ERROR` CURLE_OBSOLETE20
#define `CURLE_LIBRARY_NOT_FOUND` CURLE_OBSOLETE40
#define `CURLE_MALFORMAT_USER` CURLE_OBSOLETE24
#define `CURLE_SHARE_IN_USE` CURLE_OBSOLETE57
A problem on my end, or a bug with new(er) curl/libcurl 'vs' php ext/curl?
If more info's needed b4 redirecting, or to deal with here, pls let me know.
thx!
I needed to bump local curl build version to fix a (php-unrelated) SEGV. Currently, I have
curl -V
curl 7.67.1-DEV (x86_64-pc-linux-gnu) libcurl/7.67.1-DEV OpenSSL/1.1.1d zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh2/1.9.0_DEV nghttp2/1.40.0-DEV
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s scp sftp smtp smtps tftp
Features: AsynchDNS brotli HTTP2 HTTPS-proxy IDN IPv6 Largefile libz Metalink NTLM NTLM_WB PSL SSL TLS-SRP UnixSocketsRebuilding my usual PHP7.3/git install,
(add'l note: fwiw, the following issue also occurs with 7.4/git ...)cd php7
git branch -a | grep *
* PHP-7.3git log | head
commit 9083e178f656878cab46aee52b555346ef92a768
Author: Dmitry Stogov dmitry@zend.com
Date: Tue Nov 12 12:59:50 2019 +0300Fixed wrong constant usage commit ea2a125789d2e6cf7416bd706be1ac44df1367e4 Merge: 4a55794b98 2c9926f156 Author: Stanislav Malyshev <stas@php.net> Date: Mon Nov 11 23:08:38 2019 -0800
works nicely as usual,
/usr/local/php7/bin/php -v
PHP 7.3.13-dev (cli) (built: Nov 14 2019 19:53:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.13-dev, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.13-dev, Copyright (c) 1999-2018, by Zend TechnologiesBut curl extension now fails,
ext/curl/interface.c:778:25: error: ‘CURLE_OBSOLETE20’ undeclared (first use in this function); did you mean ‘CURLE_OBSOLETE50’?
778 | REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR);Before making noise about in @bugs, wanted to check 1st; known issue? additional/new config req'd?
That appears to be due to a recent change in libcurl[1]. We'll have to
work around that, but I'm not sure how. Define both constants for BC?
--
Christoph M. Becker
That appears to be due to a recent change in libcurl[1]. We'll have to
work around that, but I'm not sure how. Define both constants for BC?
It looks like last time this happened (value 16 reused for HTTP2), the
removed constant was reintroduced in curl to avoid just this scenario:
https://github.com/curl/curl/pull/106
Perhaps a patch should be submitted to do the same thing again this time?
Regards,
Rowan Tommins
[IMSoP]
That appears to be due to a recent change in libcurl[1]. We'll have to
work around that, but I'm not sure how. Define both constants for BC?[1] https://github.com/curl/curl/blob/b3eb7d172aab6c7f423aea2f97c27099d6b65f7a/include/curl/curl.h#L504-L506
It looks like last time this happened (value 16 reused for HTTP2), the
removed constant was reintroduced in curl to avoid just this scenario:
https://github.com/curl/curl/pull/106Perhaps a patch should be submitted to do the same thing again this time?
Ah, thanks! I've just submitted https://github.com/curl/curl/pull/4601.
--
Christoph M. Becker
Ah, thanks! I've just submitted https://github.com/curl/curl/pull/4601.
applied that patch to local curl/master build
now build of php7/ext/curl
...
make
Build complete.
thx!
Ah, thanks! I've just submitted https://github.com/curl/curl/pull/4601.
applied that patch to local curl/master build
now build of php7/ext/curl
fyi,
bumps to php 7.4/git
git log | head
commit 99b8e67615159fc600a615e1e97f2d1cf18f14cb
Merge: b78ec58f09 e981f5af51
Author: George Wang <gwang@php.net>
Date: Thu Nov 21 17:58:44 2019 -0500
Merge branch 'PHP-7.3' into PHP-7.4
commit e981f5af51bf2a16965aad68ae268021dc251c9c
Merge: b4f501d5a4 c7141412ce
Author: George Wang <gwang@php.net>
and curl/master,
git log | head
commit f70da9c17e315f382694d8ca5585191f4e5478d7
Author: Daniel Stenberg <daniel@haxx.se>
Date: Thu Nov 21 11:37:44 2019 +0100
include: make CURLE_HTTP3 use a new error code
To avoid potential issues with error code reuse.
Reported-by: Christoph M. Becker
Assisted-by: Dan Fandrich
which includes the reworked fix for this issue,
https://github.com/curl/curl/commit/f70da9c17e315f382694d8ca5585191f4e5478d7
does the trick as well,
php -v
PHP 7.4.1-dev (cli) (built: Nov 21 2019 16:45:24) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.1-dev, Copyright (c), by Zend Technologies
php -m | grep curl
curl
now just a matter of the fix making it into next curl release.