Обновленный cURL не действует в PHP

У меня есть приложение, работающее через Docker, основанное на официальном образе PHP Docker .

Я расширил его, чтобы обновить cURL и заставить его работать с nghttp2 и openssl , что мне нужно для HTTP / 2 в моем приложении.

Однако сам PHP не отражает изменения, и я не знаю почему.

Вот мой файл Dockerfile:

FROM php:7.0.3-fpm

# Add sources that allow installation of unstable packages (needed for latest OpenSSL/cURL versions).
RUN echo 'deb http://ftp.uk.debian.org/debian testing main contrib \n\
deb-src http://ftp.uk.debian.org/debian testing main contrib \n\
deb http://ftp.debian.org/debian/ jessie-updates main contrib \n\
deb-src http://ftp.debian.org/debian/ jessie-updates main contrib \n\
deb http://security.debian.org/ jessie/updates main contrib \n\
deb-src http://security.debian.org/ jessie/updates main contrib' > /etc/apt/sources.list \
&& apt-get update

# Install OpenSSL, nghttp2 and cURL (required to make HTTP/2 requests).
RUN apt-get install -y openssl nghttp2 curl

# Install other dependencies.
RUN apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng12-dev \
&& docker-php-ext-install pdo_mysql mbstring sockets zip bcmath \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd

# Copy custom PHP.ini
COPY php.ini /usr/local/etc/php/

# Run php-fpm.
CMD ["php-fpm"]

curl --version выводит:

curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.9 zlib/1.2.8 libidn/1.29 libssh2/1.4.3 nghttp2/1.7.1 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets

openssl version выводит:

OpenSSL 1.0.2f  28 Jan 2016

Однако php -i выводит:

curl

cURL support => enabled
cURL Information => 7.38.0
Age => 3
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => No
GSSAPI => Yes
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps,     ldap, ldaps, pop3, pop3s, rtmp, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host => x86_64-pc-linux-gnu
SSL Version => OpenSSL/1.0.1k
ZLib Version => 1.2.8
libSSH Version => libssh2/1.4.3

Обратите внимание, что информация cURL показывает неправильный номер версии curl, а HTTP2 помечен как no .

Любые предложения по тому, как заставить PHP использовать забрать это будет очень признателен!

1
задан 16 February 2016 в 17:33
1 ответ

Для всех, кто задается вопросом об этом в будущем, в конце концов я нашел способ сделать это. Я в основном создал свой собственный образ Docker, в значительной степени основанный на официальном PHP-образе , который загружал новую версию cURL перед компиляцией.

Он доступен на Docker hub (для PHP 7 работает через FPM, по крайней мере).

1
ответ дан 3 December 2019 в 23:51

Теги

Похожие вопросы