我有一个通过 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 Information
显示错误的 curl 版本号,并HTTP2
标记为no
。
关于如何让 PHP 实现这一点的任何建议大大感谢!