【发布时间】:2021-05-17 08:49:25
【问题描述】:
使用官方 Docker php:7.2-apache 映像,我们将 Symfony 4.2 应用程序移至容器。
然后,我们的数据库连接 (SQL Server ODBC 17) 遇到了(看似)OpenSsl 的第一个问题。
SQLSTATE [08001, 10054]: [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746
SQLSTATE [08001, 10054]: [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection
我们的原始服务器在带有 Openssl 1.1.1f for PHP 的 Ubuntu 20.04 上运行,Docker 映像在带有 Openssl 1.1.1d 2019(默认安装)的 Debian 10 上。
所以我手动安装了 1.1.1f 版本(因为包 repo 上的最后一个稳定版本是 1.1.1d)
RUN rm /usr/bin/openssl
RUN cd /usr/local/src && wget https://www.openssl.org/source/openssl-1.1.1f.tar.gz && tar -xf openssl-1.1.1f.tar.gz
RUN cd /usr/local/src/openssl-1.1.1f && ./config && make && make install
RUN ln -s /usr/local/bin/openssl /usr/bin/openssl && ldconfig
与数据库的连接正常但是我们现在无法将 SwiftMailer 连接到我们的 gmail 帐户。
Swift_TransportException: Connecn could not be established with host smtp.gmail.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
此 gmail 连接适用于 OpenSSL 1.1.1d - 所以我检查并发现 PHP 仍然使用 1.1.1d 作为 Header 库
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.1.1f 2020
OpenSSL Header Version => OpenSSL 1.1.1d 2019
所以我对 OpenSSL 的想法和问题:
- 我发现要更新 Header 但是必须重新编译 PHP 并使用官方 Docker php:7.2-apache 图像,我不知道如何 继续(或者如果它甚至是一个好主意开始)。我应该怎么做?
- 我不确定是不是因为这个问题,我会尝试使用更新的 库版本 - 1.1.1i(或更高版本)
- 作为最后的手段,我可能会将我的基本映像更改为 ubuntu:20.04 并手动安装 PHP,但我觉得这可能是矫枉过正 - 并且会花费大量时间。这值得吗?
电子邮件和数据库连接都必须有效。
【问题讨论】:
标签: php docker openssl gmail debian