我有一个基于官方PHP Docker镜像的 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显示错误的卷发版本号, HTTP2被标记为no 。
任何关于如何让PHP来接这个build议将不胜感激!
对于将来有人想知道这件事,我终于find了一个办法。 我基本上基于官方的PHP创build了自己的Docker镜像,它在编译之前下载了较新版本的cURL。
它在Docker集线器上可用(对于通过FPM运行的PHP 7,至less)。