1

我从源代码安装了 php7.2.2,并开始通过pecl install sqlsrv. 它响应pecl search sqlsrv,但通知我运行pear channel-update pear.php.net,之后搜索和安装都无法使用此错误消息:

Connection to `ssl://pecl.php.net:443' failed: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?

我阅读了各种建议,例如 http://forums.devshed.com/php-development-5/ssl-issue-pear-channel-update-pear-php-net-970623.htmlpear channel-update 后的 SSL 问题pear.php.net,但我在任何地方都没有“openssl.so”库(在某处我读过 php7 已弃用它),php -r "print_r(openssl_get_cert_locations());"发现函数未定义,并引用openssl.cafile=/opt/php/lib/php/extensions/no-debug-non-zts-20170718/cacert.pemhttp://curl.haxx.se/ca/cacert 下载的函数。 php.ini 中的pem(不出所料)证明是徒劳的。如果在那个愚蠢的更新之前它运行良好,会发生什么?

4

1 回答 1

2

我在 OpenSUSE LEAP 15.0 上遇到过类似的问题。

之后pear list-updates,我收到一条警告说我必须更新 PECL 通道协议。之后pear channel-update pecl.php.net,每当我尝试安装或更新 PECL 扩展时,我都会收到以下错误。

连接到 `ssl://pecl.php.net:443' 失败:无法找到套接字传输“ssl” - 您在配置 PHP 时是否忘记启用它?

但是,PEAR 工作正常。

检查 PEAR 和 PECL 命令之间的差异,我发现在 PECL 中,运行 PHP 的最后一行使用-n选项告诉 PHP 不要使用 php.ini。未启用 OpenSSL 扩展,因此未注册 SSL 和 TLS 套接字传输。

我不知道这是否是故意的,但我认为这有点不一致。

于 2018-06-18T16:14:32.407 回答